灾联紫黑登神赛,怒暴掌握逆世搜——氮氧碘磷 45^2 铀记

· · 生活·游记

灾联紫黑登神赛,怒暴掌握逆世搜

——NOIP 2025 游记,附(并不完整的)OI 回忆录

完整版的 OI 回忆录,或许要留待明年再续写了。

前言

本文章构思于 2025/11/16 的晚课。\ (正好与上一篇游记相隔一个月,不得不说是一种缘分。)\ 前几周一直在备战高一期中考试,然而考试周我却停课了,只在考试时回班,感觉这次期中很可能要考砸。既然如此,NOIP 就更得全力以赴了。\ 虽说这是高一的第一次 NOIP,但也很有可能是最后一次了(?)。希望能 比期中考试九门总分高 拿到省一。 本来想在这里和后面写一点伤感的文字,但发现自己语文素养实在不行,还是不喂史给大伙品鉴了。\ 欢迎大家阅读后记处的大奋文章/bangbangt。

赛前

Day -12

周日。\ 昨天和今天上午的模拟赛都因为 whk 没来得及打,估计下周要补回来了。\ 今天还布置一大堆复习卷,但是我认为 明天就停课了写个【】的作业 NOIP 更重要。(?)\ 总之就是连抄都懒得抄了。 虽然前几天其实都在抄。 虽然前几天其实都是抄的。\ 严肃学习分块中,虽然考到的可能性不大,但是当个骗分的暴力算法或许有用?

Day -11

补打了【LGR-250】洛谷 NOIP 2025 模拟赛:\ \ 当时周末补 whk 没打,今天早上进行了复现。\

不过第二题在开赛前已经看到了动规的标签了,赛时直接朝着 DP 方向思考,所以成绩可能不太有参考价值。\ ~~悲观估计,如果是 100+0+10+12=122 的话,rnk#226,那就是前 20% 左右。~~\ 学习了莫队算法,但有点走火入魔,在卡常优化的道路上越走越远。 ### Day $-10

补打了【MX-S11】梦熊 NOIP 2025 模拟赛 3 & WAOI R7 & FeOI R6.5(同步赛):\ \ 当时周末补 whk 没打,今天早上进行了复现。\

~~不说我以为 CSP 模拟呢,I mean 这 T2 真的有蓝吗?~~\ 本来都打算这几天多做做题了,突然想起来明天要期中考试。\ 又要少三天。 ### Day $-9

早上先去机房,待会准备考试。

期中考试(1/3)

D1T1 - 语文

摆了,选择题瞪眼超过一分钟还选不出来就凭感觉选一个,留了 1.5 h 写作文,结果发现不会写记叙文了。\ 随便抄几句追忆的句子当开头结尾。

D1T1.5

午休回了机房,差点睡过头。回班后,大家都在骂中午在走廊玩耍吵闹的小学生。\ 此刻就算他们打上千把瓦估计也挽回不了失去的两样东西了。\ 听高二的说,昨天小学生在楼下尖叫了半小时,当时高二正在考数学大题,高三在考英语作文。\ 小初高一体学校是坏文明。

D1T2 - 物理

发现自己科学史完全不会。\ 骗你的后面大题也不会。\ 据说这份卷子我们班有做过原题?不知道。 办干净的考试。

D1T3 - 政治

玄学学科。\ 选择题瞎选选,大题只能抄材料了,希望不要被抓然后给我爆 0 了。\ 晚课随便做做题了,这时间都不连贯也干不了啥。

Day -8

困。

D2T1 - 数学

高一第一次数学能考啥啊。\ 哎【】这 corner case 怎么这么坏。\ 考完 eps 秒发现自己改错一道填空,-5。

D2T2 - 历史

吃初中老本,用一半的时间做完题目,然后剩下一半发呆想OI题。

D2T3 - 生物

不会。

晚课教练用总共半小时讲了一遍AC自动机,但是独立做题还是不太行。 明天再看看吧。

Day -7

今天三门没一个擅长的咋办。

D3T1 - 英语

没有背书后单词,寄。\ 骗你的作文照样挂大分。

D3T2 - 化学

选择推得倒是挺快,但是后面大题卡了一会。\ 最终拿下和月考一样的分数。

D3T3 - 地理
晚上回去有点颓了,就切了 $5$ 道题。 ### Day $-6

学校邀请全市参加的模拟赛,除了某知名高中,其余没有一名选手切题。\ 恐怖如斯。\ 下午也不评讲,学校做做宣传打个广告就结束了。\ 下午又颓了,只做了 10 道题。

Day -5

中午十点教练突然通知我们有一场模拟赛。\ 花一个多小时把前两题切了,还算简单,后面的题没来得及看,临时有事。\ 下午返校了,得知上周期中考试已经出来不少了,没敢去问成绩,估计(肯定)考的不咋地。\ 现在好紧张,感觉如果高一拿不到省一,可能就直接退役了,毕竟我的 whk 成绩恐怕支撑不了高二再停课。\ 感觉做了好多绿题,但是都是第一眼没思路,看了眼题解第一句话才会的那种,也就是赛事切不了绿题。\ 每天给自己主页的任务计划加了慢慢一页面的题目,但是难以做到独立做出来,尤其是蓝+的。\ 而且好多之前写过的代码/题目忘的真的非常快,可能一个月前自己独立写的东西,现在在看也忘的七七八八的了。\ 如此状态,何以 NOIP?\ 下周 (5-1) 天的模拟赛,看能不能有所长进吧,唉。\ 最后一周还做啥题啊,直接去西藏集训然后狂刷天赋得了。\ 感觉以我现在的精神以及心理状态,很有可能在 NOIP 考完写一大堆文字(小作文),到时候别嘲笑我。

NOIP 之后,我就会【数据删除】。

Day -4

补打了【MX-S12】梦熊 NOIP 2025 模拟赛 4(同步赛):\ \

挂分前大概前 5.8%,挂分后前 29.9%。 期中考试成绩出来了,不出意外的取得了全班倒一的好成绩。\ $(95.5+135+117)+(86+85+59)+(56+65+43)=741.5$\ 其中成功拿下政治年级倒一,地理年级倒二的“好成绩”。\ 退役倒计时 $5$ 天。\ 感觉好像能做一做绿题了? ### Day $-3

补打了 NOIP 2023 真题:\ \

T2 并查集思路对了但是一直写挂了,大样例一直直挂一两个点,心态有点爆炸。\ 突然发现自己还不会做去年联赛的原题,而且部分分肯定拿不够 $190$,一想到今年万一分数线水平更高,心态更爆炸了。\ 下午还在刷题,感觉自己已经有点“过饱和”了。 ### Day $-2

神秘模拟赛,前三道乱搞题,T4 更有选手代码:\ //树上颜色段均摊模板题????\ \

下午怎么开始颓废了啊……就做了 $\le 10$ 道 [绿,蓝] 的题。\ 不是 P 话哥,但是现在真的很绝望,真的不想 NOIP 挂了然后重拾我那【】一样的 whk。\ 我该在哪里停留?我问我自己。 ### Day $-1

上午模拟赛不会做,T2 甚至数学期望,其他人都不会拿了10pts,自己稍微推推式子拿下50pts。\ \

下午打算做做字符串蓝题,结果不会,颓了一下午() ### Day $0

上午原计划还有场模拟赛的,但是我们都向教练要求复习板子。\ 花了一整个上午打了模板自测赛。\ 下午出发南京。又一次去南京,上一月仿佛就在昨天。\ 可能也是我最后一次为了 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 一看感觉像反悔贪心,半个小时场切了 ……吗 ?一测大样例过了就直接跳了。

结果一看 T2/3 都不会,就直接开始写 T4 的暴力了,然后拿了 5 分又回到 T2。

T2 一看是计数题,直接奔着正解想了,结果看了快 1.5h 没看出结论,打了个 O(2^n\times n\times m) 的暴力就走了。\ T3 我一看,【】这怎么这么像贪心,应该可以 O(n) 解决吧,然后一看不对,【】?数据范围怎么只有那么点?果然写完贪心发现 CH_4 了,但是貌似对于 m<=2 的情况是正确的?不知道,反正调了真的大半天,已经 12:00 了。\ T4 又回去写了写,想再拿一个 10pts 的暴力结果发现空间不够了,又炸了。\ 最后半小时心态已经崩飞了,在 T1 狂写小作文。

一切都将结束,一切都结束了。\ 本来想在后记写一大串小作文的,但是鉴于明天又要回班学 whk 了,而且文笔也不咋滴,就不给大伙搬达芬文章品鉴了。\ 就先这样吧。\ 实际上先等分数出来还要补充一大堆,先鸽了。\ 搬一些短文,绝大部分经 Deepseek 加工润色。 ::::info[追忆.txt] 我常常追忆过去 5 年的OI时光。\ 生命瞬间定格在脑海。我将背后的时间裁剪、折叠、蜷曲,揉捻成天上朵朵白云。\ 云朵之间亦有分别:积云厚重,如那在 NOIP 赛场上最终调试成功的那一刻;而卷云飘渺,似无数个独自对着屏幕调试的寻常晚自习。生命里震撼的场景掠过我的思绪便一生无法忘怀,而更为普通平常的记忆在时间的冲刷下只留下些许残骸。追忆宛如入梦,太过清楚则无法愉悦自己的幻想,过分模糊却又坠入虚无。只有薄雾间的山水,面纱下的女子,那恰到好处的朦胧,才能满足我对美的苛求。\ 追忆总在不经意间将我裹进泛黄的证书里。曾一起讨论算法的同学,推倒又重构的代码与思路,种种线索协助着我从一个具体的时刻出发沿时间的河逆流而上。曾经的日子无法重来,我只不过是一个过客。但我仍然渴望在每一次追忆之旅中留下闲暇时间,在某个平静的下午,在岁月的朦胧里瞭望过去的自己,感受尽可能多的甜蜜。美好的时光曾流过我的身体,我便心满意足。\ 过去已经凝固,我带着回忆向前,只是时常疏于保管,回忆也在改变着各自的形态。这给我的追忆旅程带来些许挑战。\ 我该在哪里停留?我问我自己。

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。\ 但是这真的需要我去证明吗?\ 我又该为了谁去证明这个呢?\ 是我的老师,我的家长,我的同学,我的教练?\ 我想我还是要去证明的。\ 为了我自己去证明。\ “你觉得你是职业选手吗?”“我觉得我是。”\ 如果你有足够的热爱,足够的激情。\ 其实每一个人,都可以是自己心目中的职业选手。 ::::

总不可能一点自己的东西都没有吧?\ 下面的文字没有任何逻辑可言,能读懂那算你厉害。\ 翻到了 3 年前第一张奖状,那是 CSP-J 2022,当年我初一,拿了 (210-40)分,遗憾二等。\ (即使如此,还是第一次上了学校的领奖台。)\ \ (虽然有遮个人信息,不过你可以轻松根据我的分数在名单公示里盒到这些信息。不过无所谓了。)\ 所以,就在这里告别吧。\ 我作为一名竞赛生的生涯,也算彻底结束了。\ 五年前,当第一次进入 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=。\ 很难想象这 3 年来拿的 2 等奖已有 5 个。\ 初中三年就这样唐过去了。

初三中考前,学校老师找到我,说暑假有个外面请的老师来学校讲课,问我来不来,此时我在备战中考以致不止天地为何物,随口就答应了,事后没放在心上。\ (中考 690/740,似乎在班级均分上下?不知道,但反正考得中规中矩。)\ 暑假一开始就被学校抓去补了两周 whk。在 2025/7/21 - 2025/7/27,去学校上了一周编程课,从 0 重拾 OI。殊不知,接下来的 4-5 个月,我的人生会有如此大的变化。\ 从此,做的每一道题都有了独特的颜色。\ \

回来后写写作业,马上已经准备开学了,又上了一周编程课 ~~并以此为借口逃了 $\frac{3}{7}$ 的军训。~~\ ![](https://cdn.luogu.com.cn/upload/image_hosting/prruoucp.png)\ 开学了,第一个月由于作业比较多,数学还在学立体几何,导致经常晚课去不了机房。由于我提高组的知识点还没有过完,这导致教练没少说我。\ ![](https://cdn.luogu.com.cn/upload/image_hosting/96phy9oc.png)\ 由于当年 $3$ 月份 ~~是个【】~~ 去考了 GESP 8级,于是免了初赛(及许多繁琐的复习)。\ 但是十月底的 CSP 一定要好好准备了,于是开启了抄作业的 ~~快乐~~ 时光。这段时间每天晚课来机房学习 & 做题。\ 推荐两个B站的老师[@董晓算法](https://space.bilibili.com/517494241)和[@左程云](https://space.bilibili.com/8888480),个人认为对自学的同学非常有用。\ 这期间做了不少题,还在教练的指导下刷完了 AcWing 里绝大部分算法基础 & 提高课的题目。(AcWing 同名)\ 总之就是在迷茫中奋斗,具体可参考[上一篇游记](https://www.luogu.com.cn/article/bgc9ur73)。 ![](https://cdn.luogu.com.cn/upload/image_hosting/5ju8o4q5.png)\ 成功拿下 CSP-S 1=!\ $11$ 月的学习历程差不多都在上面了,不多赘述。\ ![](https://cdn.luogu.com.cn/upload/image_hosting/sw1vk48r.png)\ 人生第一次(大概率最后一次)参加 NOIP。\ 成功拿下 NOIP 1=!\ (不知道我初中的班主任能不能读到这句话。)\ (三年前的此时,我放弃了 OI 这条路。)\ (三年后的我~~重生了,并夺回属于我的一切~~。)\ (~~但不得不承认的是班主任是对的,要不然万一连高中都上不了打不了 NOIP 不尴尬了~~。)\ 当考试结束,走出南京航空航天大学(**太阳**路校区)的大门的那一刻,我看到蓝天,白云,金黄色的叶子满天飞舞,底下是人声鼎沸的家长们。\ 那一刻,我的眼眶有些湿润,似乎是意识到自己的生涯彻底结束了。\ 但是,\ 真美呀。 > I spent my life trying to do it all\ > Trying to run so fast that I fly\ > But now I hold myself to my every fault\ > 'Cause it's all my past that makes me who I am\ > ...\ > I spent my life trying to prove it all\ > Trying to shine the brightest at night\ > But now I know myself and I'm standing tall\ > Even though my past still makes me cry sometimes\ > ...\ > ——《Grow on my time》 不知道该说些什么,感觉还是有很多话要说,很多事要做 ~~还不能休息~~。\ 但就**先**这样戛然而止吧。和我的 OI 之路一样。 ## 后记(鸣谢) 本文截止目前(2025/12/14)已有 $26600$ 字符,共 $935$ 行。\ 感谢所有SFLS的队友与老师,是你们的无私指引和紧密协作,一点点塑造了今天的我。\ 感谢始终在身后默默支持我的父母,你们给予的勇气,让我面对任何挑战时都能步履坚定。\ 感谢那些素未谋面却始终同行的网友,你们的每一次关注、每一句鼓励、每一份遥远的陪伴,都曾真切地照亮过我某段黯淡的路。\ 更重要的是,感谢此时此刻正在看着这块屏幕的——\ 你。\ 你的目光,让这段独白有了回响;你的阅读,为这场致谢赋予了完整的意义。\ 这份光亮,终是由你亲手点亮。\ 完。