CSP2025 游记

· · 生活·游记

前言 & 背景

CSP2024 游记(一年前文笔不好)

4 次打 CSP 了……

3 次一个奖没拿。[捂脸哭]

初二了,这次再不拿奖要 AFO 了。

初赛

坐标 GX。

J S
68 60
线 37.5 37

考试时全身心投入,竟然没有睡觉。

看看这分数线,GX 蒻成啥了。。。

复赛

考前备战

考前一周晚自习几乎都埋在了机房,背了点二分动规搜索之类的模板,刷了点题。

考试当天

J 组

T1 / number

一眼瞪出。

题面大概就是说给定一个只包含大小写字母和数字的字符串 s,让你用里面的数字拼成一个最大的数。

思路就是用一个桶统计每个数字出现的次数,最后逆序输出即可。

::::info[number.cpp]

#include<bits/stdc++.h>
using namespace std;
int t[10];
int main(){
    string s;cin>>s;
    for(int i=0;i<s.size();i++){
        if(s[i]>='0'&&s[i]<='9')t[s[i]-'0']++;
    }
    for(int i=9;i>=0;i--)
        for(int j=1;j<=t[i];j++)
            cout<<i;
    return 0;
}

::::

T2 / seat

题意:给出一个 n\times m 的考场,给出考场每个人初赛的分数,按分数由高到低如图箭头排列,求其中某个人的位置在第几列第几行。

可以暴力染色,但是这样就对不起标签里的“数学”了,所以我们推式子。

思路:先算出那人的排名 i

k=\lceil\frac{i}{n}\rceil

注意到奇数列由上往下填,偶数列相反。记 modi 除以 n 的余数,于是我们有

y=\begin{cases}mod&k=2s+1\land mod\not=0\\n&k=2s+1\land mod=0\\n-mod+1&k=2s\land mod\not=0\\1&k=2s\land mod=0\end{cases},s\in\Z

其中 y 表示行数,而列数 x=k。最后输出 xy 即可。

T1 和 T2 赛时大概 10min 想出正解,两题写完并测试一共用了 1h。(好像有点慢了) ### [T3 / xor](https://www.luogu.com.cn/problem/P14359) 做完 T1T2,长舒一口气:应该有奖了。于是几口扒拉完早餐看 T3。 题意:给定数列 $\{a_n\}$ 和 $k\in\N$,定义 $w_{l,r}=a_l\oplus a_{l+1}\oplus...\oplus a_{r-1}\oplus a_r$,需找出两个集合 $L=\{l_1,l_2,...,l_m\}$ 和 $R=\{r_1,r_2,...,r_m\}$,使得 $\forall i\in[1,m]\cap\Z,w_{l_i,r_i}=k$ 并且 $\forall i,j\in[1,m]\cap\Z\land i\not=j,[l_i,r_i]\cap[l_j,r_j]=\varnothing$,最大化 $m$ 的值并求出。 正解 DP,可参考[这篇题解](https://www.luogu.com.cn/article/15mb06t4),但是显然考场上的我没那么聪明。 赛时知道自己太蒻,于是专心写特殊性质 AB,即: $$k\in\{0,1\},\forall i\in[1,n]\cap\Z,a_i\in\{0,1\}$$ 这样原数列便退化为 01 串。 同时,下面的结论未经过严谨证明,纯考试思路,仅供参考。 首先了解一下异或的两个重要性质:$x\oplus0=x,x\oplus x=0$。 这里显然按 $k$ 的奇偶性分类: - 当 $k=1$ 时,答案即为数列中 $1$ 的个数。 - 当 $k=0$ 时,答案即为数列中 $0$ 的个数加上数列中连续两个位置均为 $1$ 的组数(注意 $1111$ 算两组,而不是三组,$11111$ 算两组而不是四组,这里显然是因为 $1\oplus1=0$)。 这题大概用 45min。 ### [T4 / polygon](https://www.luogu.com.cn/problem/P14360) 看看表:剩 1.75h,慢慢写也无妨。 题意:给定数列 $\{a_n\}$,从中选择 $m$ 个数构成另一个子数列 $\{b_m\}$,定义一个子数列 $\{b_m\}$ 是合法的,当且仅当 $\sum\limits_{i=1}^mb_i>2\max\limits_{i=1}^mb_i$。求合法的选择方案数对 $998,244,353$ 取模。 不出所料,果然还是方案数问题。 一般这种 T4 我都是直接暴力的,所以直接 dfs 每种状态,对于每个 $a_i$ 选或不选,最后统计方案数,时间复杂度 $O(2^n)$。(~~貌似好像有 24 分~~。 30min 解决。 ### 尾声 最后花 1h 检查,造数据,死磕特殊性质。再花 15min 发个呆,最后 0.5h 小补了个觉就撤离了。 ### 总结 这次 J 组的题应该算是比较简单的,橙橙黄绿,GX 一等线可能到 280+。 ## 中午 - $12:30$,恰饭(~~不~~好吃)。 - $12:50$,听会歌,再看点模板。 - $13:20$,有点困,睡个午觉。 - $14:00$,起床,准备迎接绝望。 - $14:20$,调试 CodeBlocks,一切正常。 - $14:30$,噩梦降临。 ## S 组 ### [T1 / club](https://www.luogu.com.cn/problem/P14361) 给我看蒙了,这就是 S 组吗。 一开始想到是 dp,浪费 1.75h。后面发现推不出式子就转向部分分(真没想到正解是贪心),做了个特殊性质 A,打算写完 T2 回来补个 B。 特性 A 做法就是按 $a_{i,1}$ 降序排列,然后累加前 $\frac{n}{2}$ 项。 ### [T2 / road](https://www.luogu.com.cn/problem/P14362) 考完出来上洛谷天塌了:这是蓝题?!! 赛时瞪一眼看出 MST 变式题(~~其实不然是变异题~~),想着自己暑假集训记得最清楚的就是 MST,打算 0.75h 搞定。 但是实操后。。。怎么这么恶心! (小插曲:`init()` 放在输入前面卡了 0.3h。) 一共足足磕了 1.7h,实在是给我干红温了,转头 0.3h 写个特殊性质 A,将权值设为直接走和绕虚点的较小值然后跑 Kruskal,但是大样例没过。 管不了那么多了,还剩 15min,T1 的特性 B 也别写了,先去写 T3T4 运气局。 ### [T3 / replace](https://www.luogu.com.cn/problem/P14363) 太急了没看题,看到样例 2,果断全输 0。 ### [T4 / employ](https://www.luogu.com.cn/problem/P14364) Sometimes giving up is also a great choice. ### 总结 这次时间分配极度不合理,对于写正解过于自信了。 得奖应该是没希望了,吸取教训,下次争取。(~~如果还有下次~~ # 赛后 - $18:40$,出考场发现教练给我们买了 KFC。 - $19:30$,在考场边吃🍔边闲聊和骂题目了好久,现在大巴才发车。 - $20:00$,回到学校,教室没几个人了。 - $20:20$,拣好作业和衣服被子,回出租屋了。 - $21:30$,开始写本篇游记。 - $23:00$,洗个澡。 - $23:20$,继续写。 - $01:00$,终于写完了,睡觉。 # 结语 祝所有 OIer CSP2025-J2/S2 rp++!