Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5
665 字
3 分钟
失踪人口回归
2025-03-02
统计加载中...

应 🐸 的建议,不能光埋头刷题,还应该 水水博客 写写题解,所以后续会时不时更新训练赛和 CSES Problem Set 部分我会的题的题解。

我个人网络预选赛打的还是挺顺利的,虽然榜一差点被抢了。 大部分题都是非常基础的签到题难度的题,主要可能是有的题比较阴间,这种难度应该也不怎么用看代码吧,绝对不是打的时候着急赶时间就没存代码

A. ACM 常识问答#

“常识”反正我是不知道,用 python 随机了七十多次答案未果。

B. 割圆术#

真正的签到题,只需要注意开 long long,或者用 python 就行。

C. 大小#

签到题,直接 if-else 就行

D. 子序列#

维护前缀和数组s,对每一个位置i,二分查找 0 ~ i - 1 中第一个 ≤ siks_i - k 位置,加起来就是答案,二分可以直接用 upper_bound。

E. 神秘咒符#

签到题,遍历字符串挨个比较就行,

F. 油专串#

略微有点阴间的签到题 (我绝对没有 3 tries),注意字符串里有空格和不合法的数据,多加一步判断是否整个串都是大写字母即可。

G. 海人的数学题1#

利用差分的思想和容斥原理,设 f(x) = x - (x / div1 + x / div2 - x / 最小公倍数(div1, div2)),答案是 f(number2) - f(number1 - 1) 。

H. 这是签到题吗#

这不是 😭(超大声)

拼尽全力没有看懂题,看榜二已经开摆了,我也不想看了。

I. 紊乱的静脉#

每次操作都会增加2,所以答案是 min(原来的通畅个数 + 2 * k, n - 1)。

  • ps : 这道是最后一个写的,所以有代码。
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
int n, m, t = 0;
string s;
cin >> n >> m;
cin >> s;
s = " " + s + " ";
for (int i = 1; i <= n; ++i) {
if (s[i] == 'L' && s[i - 1] == 'L') t++;
else if (s[i] == 'R' && s[i + 1] == 'R') t++;
}
cout << min(n - 1, t + m * 2) << endl;
return 0;
}

K. 卡牌游戏#

直接 n2n^2 挨个试就行了。

L. 魔法#

  • 如果 R - L + 1 ≥ 2025 那肯定会有一个 i 能让 i mod 2025 取到 0,所以答案是 0;

  • 否则一共就两千多个数,挨个试就行。

M. 海人的数学题2#

直接暴力就行,先算总和,然后遍历数组,一直 res = min(res, abs((总和 - 前缀和) - 前缀和))。

失踪人口回归
https://starlab.top/posts/upcpc2025-ol/
作者
Star
发布于
2025-03-02
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时