专栏文章
向着星辰与深渊:NOIP 2025
生活·游记参与者 4已保存评论 3
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @min41csm
- 此快照首次捕获于
- 2025/12/01 20:13 3 个月前
- 此快照最后确认于
- 2025/12/01 20:13 3 个月前
最糟心的事都在 NOIP 前来临。我希望这些是吉兆之前,而非凶兆之始。我不想宣泄负面情绪,因为所有情绪都来源于自身的不幸,而我的不幸来源于我的懈怠。毕竟我摆了这么久,对吗?于是我决定写下这一篇文章,可能是 OI 生涯的绝笔,可能是回忆录,可能是供大家取乐的笑话。
标题不是为了证明我玩过二字游戏,我化用它是因为它真的太像我们的 OI 生涯了,有人攀着星辰闪耀,有人随着深渊堕落。
那请接着看吧,向着星辰与深渊,欢迎来到我记忆里的,NOIP 2025。
语言逻辑混乱,多半是考前的回忆,可能前言不搭后语,请多见谅。
11.20
不幸的起点。
写了 P9118 [春季测试 2023] 幂次,以及用嘴巴做了好多题。
可是我真应该这样吗,一天摆得如此严重。
我不想再压抑下去了。
11.21
信友队,T1 一分钟想到按 分类,然后写了代码,对着 的小样例调了一整场。结束后发现做法正确, 的数据要特判。
发挥不佳,压力 。
想写一下一题多解,于是写了 P11361 [NOIP2024] 编辑字符串 另一个贪心做法:
CPP#include <bits/stdc++.h>
#define int long long
#define pb push_back
using namespace std;
const int N = 2e5 + 5;
int T, n, ans, pre[N], pre0[N][2], pre1[N][2];
bool a[N], b[N], c[N], d[N];
char op;
string s;
vector<pair<int, int> > v, vec;
inline void clear() {
ans = 0;
s.clear();
v.clear();
vec.clear();
for(int i = 0 ; i <= (n << 1) ; ++ i) {
a[i] = b[i] = c[i] = d[i] = false;
pre[i] = pre0[i][0] = pre0[i][1] = pre1[i][0] = pre1[i][1] = 0;
}
return ;
}
signed main() {
ios_base :: sync_with_stdio(NULL);
cin.tie(nullptr);
cout.tie(nullptr);
cin >> T;
while(T --) {
clear();
cin >> n;
cin >> s;
for(int i = 1 ; i <= n ; ++ i)
a[i] = s[i - 1] - '0';
cin >> s;
for(int i = 1 ; i <= n ; ++ i)
b[i] = s[i - 1] - '0';
cin >> s;
for(int i = 1 ; i <= n ; ++ i)
c[i] = s[i - 1] - '0';
cin >> s;
for(int i = 1 ; i <= n ; ++ i)
d[i] = s[i - 1] - '0';
for(int i = 1 ; i <= n ; ++ i) {
pre1[i][0] = pre1[i - 1][0] + a[i];
pre1[i][1] = pre1[i - 1][1] + b[i];
pre0[i][0] = pre0[i - 1][0] + (! a[i]);
pre0[i][1] = pre0[i - 1][1] + (! b[i]);
}
int posl = 0, posr = 0;
for(int i = 1 ; i <= n + 1 ; ++ i) {
if(c[i] && posl == 0) posl = posr = i;
else if(c[i]) posr = i;
else {
v.pb({posl, posr});
posl = posr = 0;
}
}
posl = posr = 0;
for(int i = 1 ; i <= n + 1 ; ++ i) {
if(d[i] && posl == 0) posl = posr = i;
else if(d[i]) posr = i;
else {
v.pb({posl, posr});
posl = posr = 0;
}
}
v.pb({1e9, 1e9});
sort(v.begin(), v.end());
posl = 0, posr = n + 1;
for(auto [l, r] : v) {
if(l <= posr) posr = r;
else {
vec.pb({posl, posr});
posl = l, posr = r;
}
}
for(auto [l, r] : vec) {
if(l > n) break;
++ pre[l], -- pre[r + 1];
ans += (min(pre0[r][0] - pre0[l - 1][0], pre0[r][1] - pre0[l - 1][1]) + min(pre1[r][0] - pre1[l - 1][0], pre1[r][1] - pre1[l - 1][1]));
}
for(int i = 1 ; i <= n ; ++ i)
pre[i] += pre[i - 1];
for(int i = 1 ; i <= n ; ++ i)
if(! pre[i]) ans += (a[i] == b[i]);
cout << ans << '\n';
}
return 0;
}
获得了 pts。
下午有同学回班拿东西,发现了 给我写的信。这算是好运的开端吗?
可能会在 NOIP 后放出信的部分内容。
11.22 11.26
可能写题数 ?写了几道认为比较有意义的题,不过可能都是无济于事。
模拟赛吃了很多史。
11.27
模拟赛 T1 T3 追忆。
学校有一片银杏林。
11.28
团建。看人机国际象棋大战。
回家后发生了三件不幸的事情,希望这些是最后的。
11.29
。
我还以为两分钟过 T1 是胜利的起手技呢。
最后三个半小时的得分为 。
一切都像一场梦啊,该退役了。
相关推荐
评论
共 3 条评论,欢迎与作者交流。
正在加载评论...