CSP 2025退役记

· · 生活·游记

被众多大佬游记破防的建议看看这篇

省流:寄了。

初赛 day -1

初赛的记忆早已消失,无所谓,反正初赛过了就行了

进入初三,学业压力明显上来了,初赛知识点几乎没有复习。

还不是在学校狂写作业写完了结果回家也不学 OI 就在那摸鱼

考前一天才翻出各种资料,复习了啥也忘记了总之就是背的没考考的没背

初赛 day 0

J组

今年J组没有去年那么送分了,不过还好代码基本能看懂。
CCF 依旧草台班子,各种勘误稳定发挥。

S组

S组代码几乎看不懂一点,不过各种手推两个小时还是可以偷到一点分。

最后两组都过了。

复赛 day -1

这周正好学校开运动会,但是从星期四开到星期六,结果神人学校初三运动会全体自习,星期六才放活动,所以对于初三OIer来说等于没开。而且信息技术组老师全体消失,蹭不了机房。
神秘英语老师还说周六要小测,遂周五放学留下来测,然后紧急撤离赶往考点

实际上去参加了两个团体活动,然后蹭到两瓶饮料

复赛 day 0

J组:“你简单大家也简单”绝望影像

T1水,直接统计数字个数然后从大到小输出。

T2水,本来以为数学,结果:

1 \le n \le 10, 1 \le m \le 10

那还有啥说的,直接暴力
然后研究了半天行和列,猪脑过载中, 结果测数据还是输出反了,又各种阅读理解,总算调完了。

赛后发现输入是先行后列,寄。

T3,没复习异或的性质,然后直接手推,于是代码注释:

/*
  1100
^ 1011
  0110
*/

然后得出:若 a \oplus b = c,则 c \oplus b = a
可以区间计算,遂写前缀和。
枚举区间右端i,对于每个右端枚举左端j,如果符合直接ans++;break;。 结果第一个样例没过,输出中间变量,发现每次符合之后没有更新左端限制,于是每次符合之后令l=i,遍历j时令j初始等于l。 又没过,出现不符合的也计入了,调半天发现:

==的优先级高于^

加上括号,测了大样例过了。不过这是 O(n^2) ,只能60分。
以下是根据赛时思路回忆的代码:

#include<bits/stdc++.h>
using namespace std;
const int N=500009;
int n,k,ans,l;
int a[N],p[N];
int main(){
    freopen("xor.in","r",stdin);
    freopen("xor.out","w",stdout);
    scanf("%d%d",&n,&k);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        p[i]=p[i-1]^a[i];
    }
    for(int i=1;i<=n;i++){
        for(int j=l;j<i;j++){
            if((p[i]^p[j])==k){
                l=i;
                ans++;
                break;
            }
        }
    }
    printf("%d",ans);
    return 0;
}

T4,不会写dp,于是先把n=3写了,然后直接爆搜拿n=10的分。
也不知道拿到了没有。

出考场,人均300+,本人最多284,寄。

S组:T1不会写导致心态爆炸崩盘

T1,读完一遍题以为直接对每个人最大满意度减最小满意度排序就行,然后造了一组数据直接假了,然后开始想别的思路。
最后认为可以对每个人最大满意度减第二满意度排序,挤不进去第一志愿的再排到b数组,对b数组根据第二满意度减第三满意度排序优先分配。
估计假了,不过大样例过了。

T2,寄。

T3,骗分,寄。

T4,寄。

估计要爆零。

出考场还有一逆天经历:这个学校交通非常重庆,二楼在地板上一楼在地下,然后出校路上遇到一个迷路的在楼下问路,我根据上午来的记忆指了路,怕弄错又去下面找人,结果给自己也整迷路了,还没找到人,而且我给指的路还是错的,在此给这位兄弟说声抱歉。(?)

总之炸了,初中的OI之旅也结束了,希望高中我还在吧,不过估计是AFO了

出分

J: 100+35+75+40=250
确实是T2挂分了,把n和m反过来输入就过了请输入文本

S: 100+0+0+4=104
骗分来的

本人往年游寄传送门:
2024 CSP爆炸记
CSP-J&S 2023游记