CSP 2024游记
CSP 2024
加把劲儿
10.25
老路线,先到德州再去秦皇岛。但是早上还有早读?
高铁上 HANGRY 和 JJDW 打音游被 huge 没收手机(5k手机给DZ玩也收了),当时我不知道颓什么,刚刚打开《百年孤独》。
住首旅京伦,和大师分在一个屋,下午的氛围非常好,至少都在看书。晚饭过后,开始导引元素之力,大师不停放原神音乐,两人尬聊到10点左右,洗个澡就睡了。(排水系统比较难平,漏的满屋都是)
晚上做了好多梦,都挺离谱,但只记得一个了:我在考CSP。T1非常简单直接过了,所以没有什么印象。T2是下午看到的一个贪心trick,做的得心应手(伏笔)。T3似乎很难,只会10pts,T4会30pts(后来意识到T3T4是某次模拟赛的成绩)
10.26
早上醒的时候精神还可以,先拿蓝书去会议室看看,再吃早饭。后来开始犯困,遂摆烂。像往常一样,教练发巧克力,这次还加了一句:别现在吃啊。
合照
开考直接打开虚拟机,比平时卡,但还能接受。长时间用HZ电脑,用燕大键盘有点不适应。调完vscode配置,顺序开题。
T1愣了一会,贪心每次把防御最小的踢了就行,显然是最优策略(一开始没仔细读题,以为攻击防御是分开的)。
T2做法也好想,二分每个汽车超速区间统计第一问就好了,担心炸精度所以开 long double
,时限有2秒,还是担心被卡常,另外边界问题也要注意;第二问等价于取出一些数使得每个区间都被覆盖,最小化数的个数,对于求出的每个区间按右端点排序,如果该区间已被覆盖,则不做改变,否则选择该区间最后一个数(这好像是做梦的T2做法,模拟赛也考到过,考场上我直接没绷住)。莫名担心精度爆炸。
出去上个厕所,感觉前两题有点简单啊,不挂分的前提下,已经有200pts。
T3发现每一位的贡献只与最近选择的两种数字有关,DP是显然正确的,又发现经典trick,ABC遇到过,因为这一位的颜色如果确定,那么这种颜色的状态已经确定。设 $ dp[i][j][0/1] $ ,0/1表示这一位的颜色,j表示另一颜色的最近数字,转移显然:
滚动数组和离散化优化一下还是非常优秀的,这样已经有75pts,暴力做的话单次是 $ O(n) $ 的,考场上发现第一个式子可以优化到 $ O(1) $ ,记一个最大值就好。然后是考验实现是否了,因为我发现我写的第二个暴力可以在1秒内跑过大样例,具体如下。
CODE
void solve(){
dp[a[1]][0]=dp[a[1]][1]=0;
for(int i=2;i<=n;i++){
if(a[i]==a[i-1]){
for(int j=1;j<=tot;j++){
dp[j][0]+=lsh[a[i]];
dp[j][1]+=lsh[a[i]];
}
dp[a[i-1]][0]=max(dp[a[i-1]][0],max(dp[maxn[1]][1]-lsh[a[i]],dp[a[i]][1]));
dp[a[i-1]][1]=max(dp[a[i-1]][1],max(dp[maxn[0]][0]-lsh[a[i]],dp[a[i]][0]));
}
else{
dp[a[i-1]][0]=max(dp[a[i-1]][0],max(dp[maxn[1]][1],dp[a[i]][1]+lsh[a[i]]));
dp[a[i-1]][1]=max(dp[a[i-1]][1],max(dp[maxn[0]][0],dp[a[i]][1]+lsh[a[i]]));
}
if(dp[a[i-1]][0]>dp[maxn[0]][0])maxn[0]=a[i-1];
if(dp[a[i-1]][1]>dp[maxn[1]][1])maxn[1]=a[i-1];
}
}
仔细分析复杂度,其实是 $ \sum[a_{i-1}=a_i] \times \sum[there \ is \ a_j=i] $ 。这个东西在随机情况下几乎不能卡满,虽然hack是简单的,最劣可以卡到 $ \frac{1}{4} \times n^2 $ 。考场上一阵狂喜,开始唐氏开T4。赛后发现复杂度瓶颈在全局加上,这个真不是打个标记,最后加回去就做完了?(遗憾终生)
T4看起来挺抽象,读明白题意还有不到1h,尝试打暴力,后来觉得繁琐不如检查前几题,就没写。
走出考场几乎人均 $ 250+ $ ,慌了。尤其被 wang54321 薄纱(T3线段树维护正解爷)
坐火车回家,可惜别人是11点的车到衡水,只有我和队奶9点的车到辛集。晚上真不知道颓什么,就买了瓶奶茶喝。
关于我一个人在火车上做什么
本来想读会小说,没想到火车严格遵循HZ作息,10点准时熄灯。刚考完CSP,一点不想睡,就在车窗旁边啃奶茶瓶子。
车窗上都是水雾,一边用手指画满 "CSP RP++",一边复盘今天的题。
凌晨2点开始火车上随机游走,每个车厢几乎都一样,挺无聊的。
回到座位之后,尝试把火车的被子叠成军被,但那个被罩非常不优秀,大了不知道多少,还全是褶。
反思一下为什么T3T4打这么烂。其实很大原因是比赛时束手束脚的,没敢放开写,不像模拟赛没那么患得患失。感觉改变一下做题策略还有提升空间。(NOIP加油吧)
upd
最终得分:$ 100+100+75=275 $。 T3全是hack给卡完了。这么多人300+,已经输麻了。
moon halo
Some deserts on this planet were oceans once
这颗星球上的一些沙漠曾是海洋
Somewhere shrouded by the night, the sun will shine
被黑夜笼罩的地方,也会迎来光明
Sometimes I see a dying bird fall to the ground
偶尔也会见到濒死的鸟跌落地面
But it used to fly so high
但它也曾展翅高飞
I thought I were no more than a bystander till I felt a touch so real
我本以为我不过是个旁观者 直到我感觉到如此真实的触觉
I will no longer be a transient when I see smiles with tears
当我看到人们含泪的微笑 我便不再是个匆匆过客
If I have never known the sore of farewell and pain of sacrifices
如果不曾知晓生离死别的伤痛
What else should I engrave on my mind
我又该将什么铭记于心
Frozen into icy rocks, that's how it starts
冰冻成石一般的开端
Crumbled like the sands of time, that's how it ends
沙漏崩落一般的终结
Every page of tragedy is thrown away burned out in the flame
悲剧的每一页已被焚烧殆尽
A shoulder for the past
给过往一个肩膀
Let out the cries imprisoned for so long
让久被禁锢的哭泣得以放声
A pair of wings for me at this moment
给此刻的自己一双翅膀
To soar above this world
翱翔于世界之上
Turn into a shooting star that briefly shines but warms up every heart
化为一颗流星,给每个心灵一瞬的希望
May all the beauty be blessed
愿所有的美好都能得到祝福
May all the beauty be blessed
愿所有的美好都能得到祝福
I will never go
我不会离开
There's a way back home
这就是我们的归途
Brighter than tomorrow and yesterday
比过往与未来都要更加闪耀着
May all the beauty be blessed
愿所有的美好都能得到祝福
Wave good-bye to the past when hope and faith have grown so strong and sound
当希望和信念羽翼丰满,就向昨日告别吧
Unfold this pair of wings for me again
再一次为我张开这双羽翼
To soar above this world
翱翔于世界之上
Turned into a moon that always tells the warmth and brightness of the sun
化为月亮长久地传达着太阳的光耀
May all the beauty be blessed
愿所有的美好都能得到祝福
May all the beauty be blessed
愿所有的美好都能得到祝福