NOIP2025 游记

Day -inf

停课集训。模拟赛打得有好有坏。

Day 0

不想补题。于是和 wjr 和 lbj 各自 duel 了一场。都是四道题,且和 wjr 的那场是 1500-2800,和 lbj 的是 1800-2600。

我采用了一个很抽象的策略,即开局抢 T1。不难发现这样子必须冲出 T4 才能获胜。因此两局溃败,不过并没有影响心态。

NOIP2025 rp++。

Day 1

开题。不得不吐槽的是键盘很烂。

首先把 4 道题看了一下。感觉 T1 应该不会超过黄,T2 ~ T4 看上去都很困难,但是 T2 貌似可做。

先把文件夹、虚拟机之类的东西搞好,在约 9 点时通过了所有样例。本来想打对拍的,但是觉得完全没必要(因为代码 <500B)。稍微多看了几眼就去想 T2 了。

经过约 30min 的无效思考后,我发现,如果对于存在 \(p1,p2,p3\) 且满足 \(a_{p2}>a_{p1}+a_{p3},2a_{p1}>a_{p2}\ge 2a_{p3}\) (即 \(w_{p1}=w_{p3}=1\)\(w_{p2}=2\))且跑 \(p1\) 前剩余价值为 \(1\) 时,他的贪心会寄掉。我觉得这个东西挺像 DP 的,于是开想。

到了 10 点时,我还是想不出一个比较合理的 DP。此时就有点慌了,担心自己 100pts 离场。因而我先去看看后面的暴力,如果可能的话先去打后面的暴力。

看 T3。感觉完全不可做,只会状压。看了一下只会 16pts。

看 T4。感觉是能做的 DS!开想。先想 \(L=R\)。这不是【模板】滑动窗口吗。会了。

接下来开始考虑拓展这个做法。我去想了分块,尽管它不在考纲里面。假如说每块有 \(B\) 个数,我们先预处理整块的答案,然后……

欸等等?这个东西不是至少要 \(O(n^2)\) 预处理吗?发现这个东西只能让我多通过 \(n=10^4,B=128\) 的数据,因此我开始继续思考。

看到特殊性质 D。区间长度 \(>n/2\) 意味着区间一定会跨过中点。难道是猫树分治?……

看了眼时间,已经是 10:30。我主观认为,即使我拼尽全力,T3+T4 的暴力分都不大可能 >100pts。而且,T2 明显比 T3 和 T4 简单,因此我回到了 T2。

继续想 DP。想到了 11:00(存疑,应该更晚),还是不会。想起一句话:不要死磕一个做法。于是重新看这个问题。没读错题。好的。

已知的结论应该也是对的。或许可以按照 \(a\) 排序再计数?排序之后,画个图,发现是组合计数题!不是 DP!

开始推式子。其实并不难推,用个范德蒙德卷积就可以了。

发现过不了样例一?哦,原来还有一种情况:如果 \(2a_{p1}>a_{p2},a_{p2}>a_{p1}\),且选 \(p1\) 前剩余价值为 \(2\),后面的数全是 \(2\),同样贪心不合法。

这个做法八成是对的!难道我要翻盘了吗?开写!

与 11:50 通过了样例一,未能通过样例二。

调调调,调到了 12:15。由于这是正赛,我只能放弃这个看上去很对的东西,去写暴力。 12:30,获得了 T4 40pts,12:45,应该获得了 T2 28pts,\(m=2\) 看上去很多分,可是……我没时间了。去写 T3,发现我甚至不会 \(O(2^n\text{poly}(n))\)。。。而时间只剩下 eps 分钟,因此放弃冲 T3 暴力,去检查了前面的题目。

在最后的几分钟,我有些恍惚了。我想起了省选 Day2,我因为不会 T1,获得了总分 <50pts 的好成绩。难道……NOIP 也要重蹈覆辙?

但转念一想,我才初二,NOIP 考炸对我来说也不会有太大的影响;考好也不会有多大的后果。大不了伤心几天、高兴几天。

\([0,100]+[0,28]+(-\infty)+[0,40]=-\infty\)

Day 1.5

问到了 wjr 好像是 321pts。看到了 jzc 330pts,ywl ~200pts。我还是太菜了啊。

发现是黄紫黑黑,心里平衡了一点。

晚上打 ABC。状态不好,因此没去想 FG。开始复现代码。

突然发现我 NOIP T1 好像写成了这样:

#include<bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;
const int N = 1e5 + 5;
int n,m,x[N],y[N],minn = 1e18,ans;
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin >> n >> m;
	for(int i = 1;i <= n;i++){
		cin >> x[i] >> y[i];
		minn = min(minn,x[i] + y[i]);
	}
	sort(x + 1,x + n + 1);
	int now = 0;
	for(int i = 0;i <= n;i++){
		if(now > m)break;// 这一行应该和下一行交换!!!
		now += x[i];
		ans = max(ans,(m - now) / minn * 2 + i);
	}
	cout << ans;
}

完了。洛谷 -10pts,云斗 -0pts。

希望不要挂太多分。

一些想说的话

NOIP 就这么结束了。但我的心里总是放不下它。

从 T1 抽象错误开始,我的整一场比赛的状态都感觉不在线。

假如说,我知道 T2 是紫,写完暴力走人,去想 T3 和 T4,会不会更高分呢?

假如说,我不那么快放弃 T3,再想想 DP 怎么做,会不会也像他们一样会 \(O(n^3)\) 呢?

假如说,我再想想 T4,是不是就能想到更多的分数呢?

……

这一切的答案,都是问号。

固然,在 NOIP 中放“黄紫黑黑”,确实非常的不合理且抽象。但是,归根到底,还是我策略的问题。

在考前,看到过 yjc 发的这么一句犇犇:“尽人事,听天命”。先要“尽人事”,而后“听天命”。如果连自己都没有拼尽全力,何必指望于天命所向?

在回家的车上,我就这样静静的想,默默的,不说话。我心情很不好。

回家打开 QQ。看到大家都在说 NOIP 出的太难了,当然也不乏有因此破防的人。

看到了很多人发表退役感言,突然有了一种“夕阳西下,断肠人在天涯”的悲凉。我反而清醒了过来。

我们都只是 OIer 中的一个过客,静静的经过,又静静的离去。既然如此,何不与每一场比赛笑脸相迎?改变不了题目,就改变自己的策略;没有改变自己的策略,就改变自己的心态。

考场上的不确定因素太多了。退役就退役,退役又何妨?我们不只是 OIer 啊!或许我们的 OI 生涯注定失败,但是,我们的生活不止有 OI。就算是 whker,也有属于自己的高光时刻啊。

编程就当图一乐,收收心找个电子厂上班去了。😃


初稿写于 2025.11.29 23:03。先写到这里,后面可能会补充。

posted @ 2025-11-29 23:07  linxuanrui  阅读(0)  评论(0)    收藏  举报