灾联紫黑登神赛,怒暴掌握逆世搜——氮氧碘磷 45^2 铀记
JQKLUMARKAR · · 生活·游记
灾联紫黑登神赛,怒暴掌握逆世搜
——NOIP 2025 游记,附(并不完整的)OI 回忆录
完整版的 OI 回忆录,或许要留待明年再续写了。
前言
本文章构思于 2025/11/16 的晚课。\
(正好与上一篇游记相隔一个月,不得不说是一种缘分。)\
前几周一直在备战高一期中考试,然而考试周我却停课了,只在考试时回班,感觉这次期中很可能要考砸。既然如此,NOIP 就更得全力以赴了。\
虽说这是高一的第一次 NOIP,但也很有可能是最后一次了(?)。希望能 比期中考试九门总分高 拿到省一。
本来想在这里和后面写一点伤感的文字,但发现自己语文素养实在不行,还是不喂史给大伙品鉴了。\
欢迎大家阅读后记处的大奋文章/bangbangt。
赛前
Day -12
周日。\
昨天和今天上午的模拟赛都因为 whk 没来得及打,估计下周要补回来了。\
今天还布置一大堆复习卷,但是我认为 明天就停课了写个【】的作业 NOIP 更重要。(?)\
总之就是连抄都懒得抄了。 虽然前几天其实都在抄。 虽然前几天其实都是抄的。\
严肃学习分块中,虽然考到的可能性不大,但是当个骗分的暴力算法或许有用?
Day -11
补打了【LGR-250】洛谷 NOIP 2025 模拟赛:\ \ 当时周末补 whk 没打,今天早上进行了复现。\
补打了【MX-S11】梦熊 NOIP 2025 模拟赛 3 & WAOI R7 & FeOI R6.5(同步赛):\ \ 当时周末补 whk 没打,今天早上进行了复现。\
早上先去机房,待会准备考试。
期中考试(1/3)
D1T1 - 语文
摆了,选择题瞪眼超过一分钟还选不出来就凭感觉选一个,留了
D1T1.5
午休回了机房,差点睡过头。回班后,大家都在骂中午在走廊玩耍吵闹的小学生。\ 此刻就算他们打上千把瓦估计也挽回不了失去的两样东西了。\ 听高二的说,昨天小学生在楼下尖叫了半小时,当时高二正在考数学大题,高三在考英语作文。\ 小初高一体学校是坏文明。
D1T2 - 物理
发现自己科学史完全不会。\ 骗你的后面大题也不会。\ 据说这份卷子我们班有做过原题?不知道。 办干净的考试。
D1T3 - 政治
玄学学科。\
选择题瞎选选,大题只能抄材料了,希望不要被抓然后给我爆
Day -8
困。
D2T1 - 数学
高一第一次数学能考啥啊。\ 哎【】这 corner case 怎么这么坏。\ 考完 eps 秒发现自己改错一道填空,-5。
D2T2 - 历史
吃初中老本,用一半的时间做完题目,然后剩下一半发呆想OI题。
D2T3 - 生物
不会。
晚课教练用总共半小时讲了一遍AC自动机,但是独立做题还是不太行。 明天再看看吧。
Day -7
今天三门没一个擅长的咋办。
D3T1 - 英语
没有背书后单词,寄。\ 骗你的作文照样挂大分。
D3T2 - 化学
选择推得倒是挺快,但是后面大题卡了一会。\ 最终拿下和月考一样的分数。
D3T3 - 地理
学校邀请全市参加的模拟赛,除了某知名高中,其余没有一名选手切题。\
恐怖如斯。\
下午也不评讲,学校做做宣传打个广告就结束了。\
下午又颓了,只做了
Day -5
中午十点教练突然通知我们有一场模拟赛。\
花一个多小时把前两题切了,还算简单,后面的题没来得及看,临时有事。\
下午返校了,得知上周期中考试已经出来不少了,没敢去问成绩,估计(肯定)考的不咋地。\
现在好紧张,感觉如果高一拿不到省一,可能就直接退役了,毕竟我的 whk 成绩恐怕支撑不了高二再停课。\
感觉做了好多绿题,但是都是第一眼没思路,看了眼题解第一句话才会的那种,也就是赛事切不了绿题。\
每天给自己主页的任务计划加了慢慢一页面的题目,但是难以做到独立做出来,尤其是蓝+的。\
而且好多之前写过的代码/题目忘的真的非常快,可能一个月前自己独立写的东西,现在在看也忘的七七八八的了。\
如此状态,何以 NOIP?\
下周 最后一周还做啥题啊,直接去西藏集训然后狂刷天赋得了。\
感觉以我现在的精神以及心理状态,很有可能在 NOIP 考完写一大堆文字(小作文),到时候别嘲笑我。
NOIP 之后,我就会【数据删除】。
Day -4
补打了【MX-S12】梦熊 NOIP 2025 模拟赛 4(同步赛):\ \
补打了 NOIP 2023 真题:\ \
神秘模拟赛,前三道乱搞题,T4 更有选手代码:\
//树上颜色段均摊模板题????\
\
上午模拟赛不会做,T2 甚至数学期望,其他人都不会拿了10pts,自己稍微推推式子拿下50pts。\ \
上午原计划还有场模拟赛的,但是我们都向教练要求复习板子。\ 花了一整个上午打了模板自测赛。\ 下午出发南京。又一次去南京,上一月仿佛就在昨天。\ 可能也是我最后一次为了 OI 去南京吧。\ 唉。
这次倒是轻车熟路,找了个近一点的酒店,入住也算是迅速。\ 晚上疯狂看板子 & 看自己做过的题的 trick,10:30 就睡觉了。\ 考前拜一拜,玄学祝我 NOIP 1=。
Day 1
NOIP 2025 rp++!
上午 5:50 就醒了,可能是昨晚睡得早。\ 吃过早饭,直接去考场。
\
具体考试的心路历程在下面,反正考完心态是很炸的。\
想哭了。\
看完难度,黄黑黑黑,自己没蚌埠住笑出来了。\
火车上倒是逛 QQ 群捞到不少有意思的表情包,分享给大家品鉴。\
\
下午坐火车回学校,本来还要上课的,直接不去了。\
感觉好无助啊。\
完(并不)。
赛时(附代码)
会有一些赛事脑抽写的文字/代码,不建议阅读。\
读完别嘲笑我。
T1 (100 pts)
::::info[candy.cpp]
/*
//freopen("recall.in","r",stdin);
//freopen("recall.out","w",stdout);
(ai_hai_zai_zhui_yi)
(lun_zhui_yi_hui_le_duo_shao_kao_sheng)
(Speaking of 'recall':Gao_er_na_nian, ni_bei_zhui_yi_chuang_fei_wu_yuan_sheng_dui...)
NOIP 2025 rp++;!
Luogu UID:392844 @JQKLUMARKAR
(Also in Bilibili.)
JS-S00163
JS-0337
password: !noip@Nov29,2025:dream
- 08:20
(For I don't know how to type Chinese characters, I'll use English and pinyin later.)
First year in NOIP.
Bad in whk, I think I should AFO, as I can't get higher grades in OI.
In my last three years, I've got 5 * 2=(In grade 7/8/9).
The only 1= was in last month.
That's why I was the last in class in qi_zhong_kao_shi.
I often recall my past.
Where should I stay in? I asked myself.
( Poor English:( )
//ji_yun_hou_zhong, er_jua_yun_piao_miao.
Ready to get started, and I may complete the text if time is enough(Or I just give up the last hour XD.)
- 08:28
Well I thought at 08:25 we can read the problems, but 08:28 at last.
*/
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll n,m,ans,maxa,x[100005];
struct node{
ll x,y;
bool operator<(const node t)const{
return (x+y)<t.x+t.y;
}
}a[100005];
int main(){
// freopen("candy.in","r",stdin);
// freopen("candy.out","w",stdout);
//ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
scanf("%lld %lld",&n,&m);
for(ll i=1;i<=n;i++) scanf("%lld %lld",&a[i].x,&a[i].y),x[i]=a[i].x;
stable_sort(a+1,a+n+1);
ans+=(m/(a[1].x+a[1].y));
ans<<=1;
maxa=ans;
m%=(a[1].x+a[1].y);//left=m;
sort(x+1,x+n+1);
for(ll i=1;i<=n;i++){
if(x[i]<=m){
m-=x[i];
ans++;
maxa=max(maxa,ans);
}
else{
ll Times=(x[i]-m+(a[1].x+a[1].y)-1)/(a[1].x+a[1].y);
//while(x[i]<m) ans-=2,m+=(a[1].x+a[1].y); TLE?
ans-=2*Times;
m+=(a[1].x+a[1].y)*Times-x[i];
ans++;
maxa=max(maxa,ans);
}
}
printf("%lld",maxa);
return 0;
}
/*
- 08:33
Finish reading.
Another fan_hui_tan_xin?
- 08:42
So the answer should be like:
k*(x1+y1)
0*x1
1*x2
0*x3
1*x4
...
well just let the x be sorted and try to pick them.
maybe just simple tan_xin.
Wait, what if y1 is too big, and you can throw it can choose other y1?
4 200
100 100
1 1e9
1 1e9
1 1e9
the ans should be 4.
So it's still fan_hui_tan_xin.
Does anyone know the problem on Luogu (xiao Z de AK ji_hua).
It just looked similar.
- 08:57
OMG what? All the given example are correct !!
Well it seems that my strategy is correct.
Hope it won't WA at last.
rp++;
*/
/*
- 12:22
I don't wanna solve any problems.
[0,100]+[0,24]+[0,16]+[0,5]=[0,145]
145*
154/
(wen_bi_bu_tai_hao, hen_duo_xiang_biao_da_de_dou_mei_neng_xie_chu_lai)
Maybe it's the last year I learn OI.
My whk was too weak, and I don't think I will still have time to take part in CSP/NOIP the next year.
(Who knows? What if I got 3=/no prize, and I think I have to learn again.)
Wasting too much time this term, and I messed up both of whk & OI.
No, it's no a waste of time.
I've learned a lot in OI, no only knowledge.
And I've also met so many people, students or teachers.
This is a part of my student life, how can I say it's meaningless.
If I get 1=, I would be satisfied.
If not, everything is alright.
I just wanna cry, for no reason.
Not because I get low marks(both).
Not because I have to back to whk.
Not because I have to give OI.(Also called as AFO)
Not because I fell hopeless, lonely and helplesss.
I wanna cry after the exam ends.
But I won't cry.
It's really a happy time learning OI.
' 'Cause I grow and I grow on my time. '
' Even know my past makes me cry sometimes. '
(lyrics from << Grow on my time >>)
(It't true that I play Arknights.)
Wish everyone can be who we want(ed) to be.
Maybe after NOIP, I'll be away from OI for a long time.
When first in OI(or coding, whatever), I(we) say:
"Hello, world!"
After years, when the period of time ends, I have to say:
"Goodbye, world!"
Goodbye, NOIP.
Goodbye, OI.
Goodbye, world.
Goodbye, the real me.
Good night.
- 12:52
Should be over.
*/
::::
T2 (24 pts)
::::info[sale.cpp]
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
constexpr ll mod=998244353;
ll c,t,n,m,a[10005],ans;
ll x[10005],dp[10005];
bool vis[10005];
inline ll qpow(ll a,ll b){
ll res=1;
for(;b;b>>=1,a=a*a%mod) if(b&1) res=res*a%mod;
return res;
}
struct node{
ll weight,value;
bool operator<(const node t)const{
if(value*t.weight!=t.value*weight) return value*t.weight>t.value*weight;
return value>t.value;
}
};
void dfs(ll dep){
if(dep==n+1){
ll ans1=0,ans2=0,Left=m;
for(ll i=0;i<=m;i++) dp[i]=0;
for(ll i=1;i<=n;i++)
for(ll j=m;j>=x[i];j--)
dp[j]=max(dp[j],dp[j-x[i]]+a[i]);
ans1=*max_element(dp,dp+m+1);
vector<node> vec;
vec.clear();
for(ll i=1;i<=n;i++) vec.push_back({x[i],a[i]});
sort(vec.begin(),vec.end());
for(auto&&i:vec)
if(i.weight<=Left){
Left-=i.weight;
ans2+=i.value;
}
ans+=(ans1==ans2);
ans%=mod;
/*
if(ans1==ans2){
cout << "AC Solution:\n";
for(auto&&i:vec){
cout << "item:" << i.value << ' ' << i.weight << '\n';
}
}
*/
return;
}
x[dep]=1;
dfs(dep+1);
x[dep]=2;
dfs(dep+1);
x[dep]=0;
}
void solve16(){
for(ll i=1;i<=n;i++) x[i]=2;
for(ll chg=1;chg<=n;chg++){
x[chg]=1;
ll ans1=0,ans2=0,Left=m;
for(ll i=0;i<=m;i++) dp[i]=0;
for(ll i=1;i<=n;i++)
for(ll j=m;j>=x[i];j--)
dp[j]=max(dp[j],dp[j-x[i]]+a[i]);
ans1=*max_element(dp,dp+m+1);
vector<node> vec;
vec.clear();
for(ll i=1;i<=n;i++) vec.push_back({x[i],a[i]});
sort(vec.begin(),vec.end());
for(auto&&i:vec)
if(i.weight<=Left){
Left-=i.weight;
ans2+=i.value;
}
ans-=(ans1!=ans2);
x[chg]=2;
}
}
int main(){
// freopen("sale.in","r",stdin);
// freopen("sale.out","w",stdout);
//ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
scanf("%lld %lld",&c,&t);
if(c<=5){
while(t--){
ans=0;
scanf("%lld %lld",&n,&m);
for(ll i=1;i<=n;i++) scanf("%lld",a+i);
sort(a+1,a+n+1);
dfs(1);
printf("%lld\n",ans);
}
return 0;
}
if(c==18){
while(t--){
scanf("%lld %lld",&n,&m);
for(ll i=1;i<=n;i++) scanf("%lld",a+i);
printf("%lld\n",qpow(2,n));
}
return 0;
}
if(c==16){
while(t--){
scanf("%lld %lld",&n,&m);
for(ll i=1;i<=n;i++) scanf("%lld",a+i);
sort(a+1,a+n+1);
ans=qpow(2,n);
solve16();
ans=(ans+mod)%mod;
printf("%lld\n",ans);
}
return 0;
}
mt19937 AFO(time(0));
srand(20251129);
while(t--) printf("%lld\n",AFO()%mod);
return 0;
}
/*
- 09:57
Finish reading.
You know what? I really dislike Math problems.
(yi_xia_wei_kou_hu_jie_fa)
if there exist a reversing number pair(or more), then the sol is incorrect.
Wait it's very like NOIP 2024-T2 assign.
- 10:16
No I was wrong.
- 10:36
I'm now very anxious.
2h past, only 100pts.
How can I solve T2 or try to get the most points?
Plz rp++;
- 10:44
Only 20 pts.
AFO.
- 12:00
I don't think I can get more points.
Maybe I'm just useless:(
Where should I stay? I asked myself.
*/
::::
T3 (16 pts)
::::info[tree.cpp]
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll T,n,m,pos,head[10005];
ll val[10005],ans,maxa;
struct Edge{
ll v,ne;
}E[10005];
void addEdge(ll u,ll v){
E[++pos]={v,head[u]};
head[u]=pos;
}
bool leaf[10005];
void dfs(ll u){
if(leaf[u]) return;
for(ll k=head[u],v=E[k].v;k;k=E[k].ne,v=E[k].v) dfs(v);
bool all_leaf=true;
ll cnt_under=0;//count the leaves
for(ll k=head[u],v=E[k].v;k;k=E[k].ne,v=E[k].v){
if(!leaf[v]) all_leaf=false;
else cnt_under++;
}
if(all_leaf){
for(ll k=head[u],v=E[k].v,i=0;k;k=E[k].ne,v=E[k].v,i++) val[v]=i;
val[u]=cnt_under;
return;
}
ll maxa=-1;
for(ll k=head[u],v=E[k].v;k;k=E[k].ne,v=E[k].v){
if(!leaf[v]) maxa=max(maxa,val[v]);
}
ll time_stamp=maxa;
for(ll k=head[u],v=E[k].v;k;k=E[k].ne,v=E[k].v){
if(leaf[v]) val[v]=++time_stamp;
}
val[u]=maxa+cnt_under+1;
}
ll mex[10005];
void dfs_for_cal(ll u){
mex[u]=val[u];
for(ll k=head[u],v=E[k].v;k;k=E[k].ne,v=E[k].v){
dfs_for_cal(v);
mex[u]|=mex[v];
}
ll res=0,MeX=mex[u];
while(MeX&1){
res++;
MeX>>=1;
}
ans+=res;
}
void dfs_for_op(ll dep){
if(dep==n+1){
ans=0;
dfs_for_cal(1);
maxa=max(maxa,ans);
return;
}
for(ll i=0;i<n;i++){
val[dep]=(1<<i);
dfs_for_op(dep+1);
val[dep]=0;
}
}
int main(){
// freopen("tree.in","r",stdin);
// freopen("tree.out","w",stdout);
//ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
scanf("%lld",&T);
while(T--){
scanf("%lld %lld",&n,&m);
if(m<=2){
pos=ans=0;
memset(E,0,sizeof E);
memset(val,0,sizeof val);
for(ll i=1;i<=n;i++) leaf[i]=1;
memset(head,0,sizeof head);
for(ll u,v=2;v<=n;v++){
scanf("%lld",&u);
addEdge(u,v);
leaf[u]=false;
}
dfs(1);
for(ll i=1;i<=n;i++){
//cout << i << ':' << val[i] << '-' << leaf[i] << '\n';
if(leaf[i]) ans+=(val[i]==0);
else ans+=val[i]+1;
}
printf("%lld\n",ans);
continue;
}
else if(n<=13){
pos=maxa=0;
memset(E,0,sizeof E);
memset(mex,0,sizeof mex);
memset(val,0,sizeof val);
for(ll i=1;i<=n;i++) leaf[i]=1;
memset(head,0,sizeof head);
for(ll u,v=2;v<=n;v++){
scanf("%lld",&u);
addEdge(u,v);
leaf[u]=false;
}
dfs_for_op(1);
printf("%lld\n",maxa);
continue;
}
else{
pos=ans=0;
memset(E,0,sizeof E);
memset(val,0,sizeof val);
for(ll i=1;i<=n;i++) leaf[i]=1;
memset(head,0,sizeof head);
for(ll u,v=2;v<=n;v++){
scanf("%lld",&u);
addEdge(u,v);
leaf[u]=false;
}
dfs(1);
for(ll i=1;i<=n;i++){
//cout << i << ':' << val[i] << '-' << leaf[i] << '\n';
if(leaf[i]) ans+=(val[i]==0);
else ans+=val[i]+1;
}
printf("%lld\n",ans);
}
}
return 0;
}
/*
- 10:55
Finish reading.
Another tan_xin?
- 11:18
tan_xin was WA.
AFO.
- 11:24
(qu_wei sheng_jian)
Maybe when m<=2, my tan_xin was correct.
- 11:46
Even the baoli was TLE/WA.
More and more vegetables, what should I do?
AFO.
*/
::::
T4 (20 pts)
::::info[query.cpp]
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
ll n,q,a[50005],k[50005],pre[50005],L,R;
ll dp[3005][3005];
ull ans;
inline ll Getsum(ll l,ll r){
return pre[r]-pre[l-1];
}
int main(){
// freopen("query.in","r",stdin);
// freopen("query.out","w",stdout);
scanf("%lld",&n);
for(ll i=1;i<=n;i++) scanf("%lld",a+i),pre[i]=pre[i-1]+a[i];
/*
for(ll i=1;i<=n;i++,cout << '\n')
for(ll j=1;j<=n && i+j-1<=n;j++)
dp[i][j]=max(dp[i][j-1],Getsum(i,i+j-1)),cout << dp[i][j] << ' ';
*/
scanf("%lld",&q);
while(q--){
scanf("%lld %lld",&L,&R);
for(ll i=1;i<=n;i++) k[i]=LLONG_MIN;
for(ll len=L;len<=R;len++)
for(ll l=1,r,sum;l+len-1<=n;l++){
r=l+len-1;
sum=pre[r]-pre[l-1];
for(ll i=l;i<=r;i++) k[i]=max(k[i],sum);
}
ans=0;
for(ll i=1;i<=n;i++) ans^=(i*k[i]);
printf("%llu\n",ans);
}
return 0;
}
/*
- 09:23
After reading all the problems, I decide to write T4 first.
- 09:34
Finish 5pts.
7s on data2.
- 09:48
Trying to get another 10 pts but failed.
Maybe try again later.
- 12:05
Last(less than) one hour.
Can I get the last 10 pts?
- 12:18
MLE.
I give up.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
ll n,q,a[50005],k[50005],pre[50005],L,R;
ll dp[3005][3005];
//ll st[3005][3005][13];
ull ans;
inline ll Getsum(ll l,ll r){
return pre[r]-pre[l-1];
}
inline ll query(ll ps,ll l,ll r){
ll maxa=LLONG_MIN;
for(ll i=l;i<=r;i++) maxa=max(maxa,dp[ps][i]);
return maxa;
}
int main(){
freopen("data.in","r",stdin);
//freopen("data.out","w",stdout);
scanf("%lld",&n);
for(ll i=1;i<=n;i++) scanf("%lld",a+i),pre[i]=pre[i-1]+a[i];
for(ll i=1;i<=n;i++)
for(ll j=1;j<=n && i+j-1<=n;j++)
dp[i][j]=dp[i][j-1]+a[i+j-1];//dp[i][j] -> i,i+1,...,i+j-1 , j ge shu in total.
scanf("%lld",&q);
while(q--){
scanf("%lld %lld",&L,&R);
for(ll i=1;i<=n;i++) k[i]=LLONG_MIN;
for(ll id=1;id<=n;id++)
for(ll l=0;l<R && id-l>=1;l++){
//sum from id-l to id+?;
ll res=pre[id]-pre[id-l-1]+a[id];//on left there are (l+1) ge shu.
ll rmin=max(L-(l+1),0ll),rmax=R-(l+1);//r -> you bian you r ge shu.
res+=query(id+1,rmin,rmax);
k[id]=max(k[id],res);
}
ans=0;
for(ll i=1;i<=n;i++) ans^=(i*k[i]);
printf("%llu\n",ans);
}
return 0;
}
*/
::::
概况
T1 一看感觉像反悔贪心,半个小时场切了 ……吗 ?一测大样例过了就直接跳了。
- Upd on 2025/11/29 Luogu 民间数据挂了
25 分。 - Upd on 2025/12/7 官方数据水了,拿下
100 分。
结果一看 T2/3 都不会,就直接开始写 T4 的暴力了,然后拿了
- Upd on 2025/12/7 感谢 CCF 少爷机,暴力拿下
20 分。
T2 一看是计数题,直接奔着正解想了,结果看了快
- 估分:
[0,75]+[0,20]+[0,16]+[0,5]=[0,116] - Upd on 2025/12/7 出分了,
100+24+16+20=160 。 - Upd on 2025/12/13 出分数线,稳稳1=,感谢各位。
赛后(追忆)
一切都将结束,一切都结束了。\
本来想在后记写一大串小作文的,但是鉴于明天又要回班学 whk 了,而且文笔也不咋滴,就不给大伙搬达芬文章品鉴了。\
就先这样吧。\
实际上先等分数出来还要补充一大堆,先鸽了。\
搬一些短文,绝大部分经 Deepseek 加工润色。
::::info[追忆.txt]
我常常追忆过去
Where's our tomorrow?\ Where does our future go?\ ——《Grown-up's Paradise》 ::::
::::info[终于结束的起点.txt] 来源:P4994 终于结束的起点
终于结束的起点\ 终于写下句点\ 终于我们告别\ 终于我们又回到原点\ ……
一个个 OIer 的竞赛生涯总是从一场 NOIP 开始,大多也在一场 NOIP 中结束,好似一次次轮回在不断上演。
如果这次 NOIP 是你的起点,那么祝你的 OI 生涯如同夏花般绚烂。
如果这次 NOIP 是你的终点,那么祝你的 OI 回忆宛若繁星般璀璨。
::::
::::info[程序人生.txt] 来源:NOI2009 河北代表队李博杰 论文后记《程序人生》 人生处处程序,程序片片人生。\ 当 NOIP 的终止哨吹响,又是一切似曾相识的开始。也许悲伤,也许畅快;也许为 NOI 而继续徜徉,也许永远作别那熟悉的机房。程序,字母与数字的集合,诠释着生命本初的向往。\ 有人问,学习信息学竞赛有什么用。显然,多数人就是为了保送一所好大学。更有甚者,“NOIP 一等奖证书一发,算法导论就扔进旧书箱”。我们不禁想,这样学到的一些所谓的程序,不过是无聊字母构成的一个个文件,实在没有什么深的意义;由此,中国学术的不正之风,中国难以拿到的诺贝尔奖,中国在科技领域仍然落后的事实,也便不难诠释了。\ 偌大的中国,竟不能得一个诺贝尔奖!观夫日本以弹丸之地,致科技之巅,获强国之位,岂为科技之原因乎?中华五千年灿烂,领先于世界,而今纵一奖而不可得,何也?功名过甚而钻研不足也。科技如此,竞赛何以例外?试使竞赛之生,得奖而掷学,不思持之以恒,则中华信息产业之复兴,又远于强国之林也。\ 我早就说过,我向来是不对当下某些人的素质抱有任何幻想的。但我也明白,单凭一己之力,难以改变现实,只能奋臂高呼,仅此而已。而此生最美的风景,则是自然,更进一步,则是科学。\ 富兰克林说过,他人生的最大动力是爱情、知识和对世界的同情心。我则认为,站在自然界浩瀚的大海面前,捡拾几颗美丽的珍珠,则是人生最大的财富。\ 最美的风景不在浮华的宫殿,最深的情感不在潇洒的语言。人类区别于动物的最大特征,就是感情系统。而将这个系统放在怎样的环境下运行,装入怎样的软件,则是由每个人自己决定的。这台系统是如此精密,它对客观世界的一切细小的变化了如指掌;这台系统又是如此强大,它对客观世界的一切复杂的事情洞察清晰。系统软件,则是人装入的思想与境界。\ 我为我的系统装入这样的程序,它不求功名,只求现在的快乐;它不求光耀,只求自然的探索。它不愿为那些所谓的 “一等奖” 徘徊于两点一线之间,只为心中的理想而进入那浩如烟海的竞赛书籍的世界。\ 人生俯仰,就是在构建属于自己的程序;程序纷繁,就是在控制人生的进程。当程序调入内存,一个生命呱呱坠地。程序编写完毕,不容修改,正如先天的基因不能改造。算法的优劣,已经决定了这个程序的初步走向;但更大的变化空间,还在输入的数据:一组好的数据,适合的数据,能使程序瞬间出解,非常正确;而那些极限数据,或超时,或错误,难以保证程序的运行是否顺利完成。\ 当读入函数开始执行,教育构成一切变量的初始值,起到至关重要的作用。硬盘灯在闪烁,那是记忆系统在疯狂的接受这个世界赋予他的一切。没有评判,没有选择,只有默默的接受,不知所云的接受,即使是机械的模仿。动作,语言,思想,感情,一项项参数从自然界的文件读入。内存中,一个世界的雏形,正在渐渐形成。\ 当主运行函数开始执行,奋斗的历程谱成一曲美妙的音乐,但静悄悄的,不为世人所知,用瓢泼的汗水挥洒在处理器的运行途中,内存中构建着未来的生命之塔。CPU 利用率达到 100%,内存占用达到峰值,这时系统最累最苦的时刻,但黑色的屏幕没有任何反应,就像隐匿深山的桃花源中发生的一切。算法的优劣,这时已见分晓,只是未被世人所知罢了。\ 当一切做好准备,输出函数便开始工作。渐渐为世人所知,成果缓缓浮现,一项项与输入迥然不同的输出,展现在社会的大屏幕上。程序的好与坏,对与错,价值连城与一文不值,也便开始接受世界的评判。输出的内容,同样不容更改。你不能在测评结束后修改主程序,你不能在结果输出后反悔执行的失误。\ 当输出宣告完毕,程序的使命便行将结束。它只是做几个收尾的工作,把文件关闭,以便后人使用;把内存释放,以便其他程序运行;最后,进程从任务管理器中消失,宣告了程序的终结。终结的程序并没有为自然界忘记,内存中还有运行过程的影子,只是很快就被重新分配初始化,于是程序运行的过程被自然界的操作系统所淡忘;但输出的文件,却永久保留在自然界的硬盘上,留待再次使用。\ 当又一个用户登录,看到这个程序生命中所输出的一切,就会生发出无限的感慨。或崇敬,或唾弃;或喜爱,或质疑;或光宗耀祖,或名声扫地。因为算法的优秀,有的输出百年不遇;但人们想找回程序运行的中间过程,甚至重新运行一遍,却又是那样的不可能:程序纷繁,那些内存的地址早已被覆盖千百次,不留任何痕迹。于是,算法变成了人类永恒的话题。为了一个良好的输出,主程序中深度优先,广度优先,在自然界的初值中反复探索、回溯、更新最优值,不惜 CPU 完全占用,不惜把其他进程的空间挤占,甚至试图获取操作系统的底层控制权限,俯瞰程序运行的一切。\ 这就是程序。人生的程序,与我们编写的程序相较,输入输出难以计数,函数语句冗长难懂,变量定义杂乱无规。这样,搞懂人生的程序,便成为难于上青天的任务。好在几千年的先哲们,已经零散的作出了片片研究成果,散落在文明的田野中等待捡拾,这些算法,或许值得我们学习,不说抄袭,但大可借鉴。\ 创造良好的算法,是人生追求的目标;而自己创造的算法,又指引生命之程序执行的方向。人生程序,程序人生。每当我看到那程序的窗体一闪而过,便想到内部蕴含的丰富的过程。也许程序的运行十分短暂,但输出将长久地停留在操作系统的桌面。\ 我为什么学习信息学竞赛,为什么初赛遇到如此大的风波临危不乱,为什么复赛进入省队却并未欢声雀跃,从人生的程序,也许可以找到答案。信息学竞赛,在人生的程序中,也许只是一个极小的函数;但每个函数都具有不可或缺的功能,缺少任何一条语句,就不能称作是完整的程序。\ 我愿用程序控制人生。选择一个优秀的算法,为全人类输出有价值的成果,就是我毕生的追求。我不在意执行过程中的千变万化,只为那输出一刻。把学习数学物理信息学三个学科的竞赛当作乐趣,获得如此令人羡慕的成绩,同时搞好文化课,包括费大力气开办这个博杰学习网,把我所知的一切毫无保留的告诉所有热衷于科学事业的人们…… 在常人看来或幼稚,或天真,或虚伪,或功名显赫,或不可思议的那些努力,其实都是为了那个人生终极的程序 —— 为了给自然界的操作系统留下有意义的输出。我始终相信,有这个不言悔的信条,任何难以企及的高峰,都可以在开阔豁达的背景下攀登。\ 但愿每个人生都有美好的程序相伴。\ 最后,让我们与温总理一起《仰望星空》,彻悟人生程序,品味程序人生。\ 我仰望星空,它是那样寥廓而深邃;\ 那无穷的真理,让我苦苦地求索、追随。\ 我仰望星空,它是那样庄严而圣洁;\ 那凛然的正义,让我充满热爱、感到敬畏。\ 我仰望星空,它是那样自由而宁静;\ 那博大的胸怀,让我的心灵栖息、依偎。\ 我仰望星空,它是那样壮丽而光辉;\ 那永恒的炽热,让我心中燃起希望的烈焰、响起春雷。 :::: ::::info[Untitled.txt] 我花了半辈子的时间证明自己是OIER。\ 但是这真的需要我去证明吗?\ 我又该为了谁去证明这个呢?\ 是我的老师,我的家长,我的同学,我的教练?\ 我想我还是要去证明的。\ 为了我自己去证明。\ “你觉得你是职业选手吗?”“我觉得我是。”\ 如果你有足够的热爱,足够的激情。\ 其实每一个人,都可以是自己心目中的职业选手。 ::::
总不可能一点自己的东西都没有吧?\
下面的文字没有任何逻辑可言,能读懂那算你厉害。\
翻到了 不过无所谓了。)\
所以,就在这里告别吧。\
我作为一名竞赛生的生涯,也算彻底结束了。\
五年前,当第一次进入 C++ 的世界,当对着屏幕敲下 cout << "Hello, world!";。那一刻,一个由逻辑、循环与递归构成的全新世界,在我眼前缓缓展开。\
加入 syc 机构,开始学习。\
随后于 2020/09/24,UID:392844 加入了洛谷。\
学了差不多一年语言一年普及算法,期间打了一些大大(大在哪?)小小的比赛,如 lqb 之类的。\
两年后才参加 CSP。\
梦开始的地方。
CSP-J 2022,2=。\
初一的期中考试过后,班主任因为我糟糕的成绩而跟我父母谈话,谈话的结果是停掉OI,也就是不再学新东西了。\
此时我刚刚接触基础的提高级算法,当时还死磕线段树半天读不懂,但一切就这样在匆忙中结束了。\
于是乎:\
CSP-J/S 2023,2=,2=。\
CSP-J/S 2024,2=,2=。\
很难想象这
初三中考前,学校老师找到我,说暑假有个外面请的老师来学校讲课,问我来不来,此时我在备战中考以致不止天地为何物,随口就答应了,事后没放在心上。\
(中考 690/740,似乎在班级均分上下?不知道,但反正考得中规中矩。)\
暑假一开始就被学校抓去补了两周 whk。在 2025/7/21 - 2025/7/27,去学校上了一周编程课,从