AtCoder Beginner Contest 397 A - D题解

server/2025/3/18 9:00:55/

Tasks - OMRON Corporation Programming Contest 2025 (AtCoder Beginner Contest 397)


本文为 AtCoder Beginner Contest 397 A - D题解

题目A:

代码(C++):

#include <bits/stdc++.h>int main() {double n;std::cin >> n;if (n >= 38.0) {std::cout << 1;} else if (n >= 37.5) {std::cout << 2;} else {std::cout << 3;}
}

题目B:  简单贪心,一次遍历

B - Ticket Gate Log

代码(C++):

#include <bits/stdc++.h>int main() {std::string s;std::cin >> s;int ans = 0;bool f = true;for (int i = 0; i < s.size(); i++) {if (f) {if (i % 2 == 0 && s[i] != 'i' || i % 2 == 1 && s[i] != 'o') {f = !f;ans++;}} else {if (i % 2 == 1 && s[i] != 'i' || i % 2 == 0 && s[i] != 'o') {f = !f;ans++;}}}if ((ans + s.size()) % 2 != 0) {ans++;}std::cout << ans;
}

题目C: 哈希表

C - Variety Split Easy

题目大意:

给你一个数组,把数组分成两个部分,使得数组左边所含有的不同数字个数 + 右边所含有的不同数字个数最大

解题思路:

用两个哈希表mp1, mp2进行模拟即可,mp1先把所有数字添加进去,然后从左到右遍历,mp1减去当前数字,mp2加上当前数字,然后更新答案即可

代码(C++):

#include <bits/stdc++.h>int main() {int n;std::cin >> n;std::vector<int> a(n);std::set<int> st;std::map<int, int> mp;for (int i = 0; i < n; i++) {std::cin >> a[i];mp[a[i]]++;}int ans = 0;for (int i = 0; i < n; i++) {mp[a[i]]--;if (mp[a[i]] == 0) {mp.erase(a[i]);}st.insert(a[i]);ans = std::max(ans, int(st.size() + mp.size()));}std::cout << ans;
}

题目D: 数学推导,枚举优化

题目大意:

给定一个数字n,请你找出两个正整数x, y,满足x * x * x - y * y * y = n

解题思路:

此题我参考jiangly的写法,给出如下详细推导证明:

由上述推导可知,我们可以进行以下枚举:
时间复杂度为O(\sqrt[3]{N}),可以满足题目要求

for (i64 d = 1; d * d * d <= n; d++) {}

现在问题就变成了,如何用这个d和n找出y和x,可以参考下面推导:
​​​、​​​​​

 字写的有点丑,见谅...

代码(C++):

#include <bits/stdc++.h>using i64 = long long;int main() {i64 n;std::cin >> n;for (i64 d = 1; d * d * d <= n; d++) {if (n % d != 0) {continue;}i64 p = n / d - d * d;if (p % 3 != 0) {continue;}p /= 3;i64 y = (std::sqrt(d * d + 4 * p) - d) / 2 + 0.5;if (y <= 0) {continue;}i64 x = y + d;if (__int128(x) * x * x - __int128(y) * y * y == n) {std::cout << x << " " << y;return 0;}}std::cout << -1;
}


http://www.ppmy.cn/server/175922.html

相关文章

学习threejs,使用MeshLambertMaterial漫反射材质

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.MeshLambertMaterial…

计算机网络基础:网络配置与管理

计算机网络基础&#xff1a;网络配置与管理 一、前言二、网络设备配置基础2.1 路由器配置2.1.1 路由器的基本概念2.1.2 路由器的初始配置2.1.3 路由器的接口配置2.1.4 路由配置 2.2 交换机配置2.2.1 交换机的基本概念2.2.2 交换机的初始配置2.2.3 交换机的端口配置2.2.4 VLAN 配…

盘库吧--搜索

网站介绍 网盘资源搜索&#xff0c;包含了百度、夸克、阿里、迅雷、115、天翼、UC 等网盘&#xff0c;支持链接有效性检测。 网站地址 https://panku8.com

如何进行技术选型?

前端技术发展速度快的看法 前端技术的更新换代确实非常快&#xff0c;几乎每年都会有新的框架、工具和最佳实践涌现。从 Vue 2 到 Vue 3、从 Webpack 到 Rspack/Vite、从 Redux 到 Zustand/Recoil&#xff0c;甚至前端工程化、微前端、Server Components 等方向也在快速演进。…

小程序网络大文件缓存方案

分享一个小程序网络大图加载慢的解决方案 用到的相关api getSavedFileList 获取已保存的文件列表&#xff1b;getStorageSync 获取本地缓存&#xff1b;downloadFile 下载网络图片&#xff1b;saveFile 保存文件到本地&#xff1b;setStorage 将数据储存到小程序本地缓存&…

电脑自动关机故障维修案例分享

电脑基本配置&#xff1a; C P U: AMD A10 9700 内存&#xff1a;8G 硬盘&#xff1a;金邦512G固态硬盘 主板&#xff1a;华硕 A320M-F 显卡&#xff1a;集成&#xff08;核心显卡&#xff09; 操作系统&#xff1a;Win10专业版 故障描述&#xff1a; 使用一段时间会黑屏…

边缘云原生操作系统的设计与思考

资料来源&#xff1a;火山引擎-开发者社区 边缘云行业现状和发展历程 从 06 年 AWS 推出 EC2 、S3 到今天已经过去了 18 年&#xff0c;云计算早已不是一个新鲜词汇&#xff0c;从当前业务来看&#xff0c;我们能看到云计算从中心到中心边缘的发展趋势&#xff0c;为什么会有 这…

4G模组Air780EPM:解锁物联网时代的硬件接口奥秘!

在物联网&#xff08;IoT&#xff09;技术飞速发展的当下&#xff0c;通信模组作为连接物理世界与数字网络的“桥梁”&#xff0c;其硬件接口的丰富性与兼容性已成为衡量其竞争力的核心指标。 一、ADC 接口设计指导 Air780EPM 模块(LuatOS 版本)支持 4 路通用 ADC 接口&#x…