2024 CSP-J/S 游记

andycode

2024-09-22 10:47:25

Life & Travel

初赛篇

七级考了 91,本来能免 J 组初赛的,可是考得太晚了(9月),最迟得八月申请,所以还是要老老实实的初赛。

J组

提前半个多小时就到达了 SZ,放好东西后就无聊地看有没有熟人。结果一个都没碰着,倒是遇到一个三中集训营见到的。于是便跟他聊了聊。

上来发现题目很简单,也是直接拿捏。完善程序题居然考了入门级的完全平方数,和最经典的汉诺塔,简直就是送分送到底。我花了 40 多分钟就做完了。

回来检查时,感觉阅读程序第三大题的第二题有问题,因为 b 为负数时不应该能减成正整数吗?那不应该是栈溢出吗?怎么能是无限递归呢?如以下代码,

#include <bits/stdc++.h>
using namespace std;
int main(){
    int b=-(1<<31);
    cout<<b-1;
    return 0;
}

输出为 2^{31}-1,减成正整数了。

还有第三题,如果 b 为负数,那运行时间肯定比 b=0 时长呀。所以应该为错。

二话不说,两题立刻改为错。

中午

中午就跟我爸去久号吃饭了,这题目出得还蛮快,微信一搜,真题就出来了,没一会儿,小图灵又出估分了,和洛谷民间答案一样,估了是97,偏偏就只错了那两道订正时选错的。我觉得,我选得没错呀!接着 CCF 又说有争议,所以对错都给分,但可能是批卷老师懒得改了,所以落得一个 97pts

S组

上午攒足的信心到下午全丢光了。

碰到LSW和XFX了,XFX在上午就和我一个考场,我居然下午才认出来……我这记性呀!

拿到试卷,选择题还算容易,只错了一题,可这阅读程序和完善程序出的也太难了吧,大部分都靠蒙,最后一道完善更是全蒙B,民间答案一看,早知道蒙A了qwq。考场上快崩溃了,我可不想年纪轻轻就英勇退役呀!我好蒻……

估分是71,我也是总算安心了。

最终成绩:

J组:97pts,S组:71pts

后记

洛谷上大家也是讨论得热火朝天,犇犇里一大堆人晒成绩,一看,居然 NOI 的也来参加了,让不让人活了……

复赛篇

早上起来后就直接出门打车去考点,早饭全在路上吃了。

J组

考试地点在FG。设备还算新,就是键盘有点硬,有时一些键位要用力才能按下去,有时一些键位按下去就一直陷下去了,不弹起来,得再按以下弹起来,导致屏幕上输出一长串。

先把每一题看了一下,前两题签到题,就不用多说了。重点说一下第三题。

测试点编号 n\leq 特殊性质
1 20
2 50
3 10^3 A
4,5 10^5 A
6 10^3 B
7,8 10^5 B
9 10^3
10 10^5

特殊性质 A:保证 n7 的倍数且 n \geq 100

特殊性质 B:保证存在整数 k 使得 n = 7k + 1,且 n \geq 100

前两个测试点容易想到打表,但是我重点想的是特殊性质 AB。

首先看 A,想让这个数最小,那肯定得先让它的位数最小,而 n7 的倍数,所以输出 n\div78 就可以了。

再看 B,容易想到从 n 中先取出 8 组成 10,然后将剩下的按照 A 做即可。

写完 AB,我又开始想起了正解(顺便打了个表)。要想让它最小,首先要保证它的位数最小,所以要先用 m 记录答案的位数。接着,我们去贪心,记录每一个数所需要的木棍数量。我们从高到低依次枚举每一位,然后再枚举数字,从中选出最小的数字,使得它不会影响到后面的位数,且剩下的火柴足够拼出该数。

需要注意的是,由于答案不能有前导 0,且是正整数,所以最高位要从 1 开始枚举,其他位则从 0 开始。

然后再考虑答案为 -1 的情况,发现只有 n=1 时才为 -1。于是加上特判,圆满完成。

最后一题研究了以下,通过我做欧拉路径的经验发现可能是图论,但是考虑到建边太多,就果断放弃,暴搜拿 15pts

最终估分是 100+100+100+15=315pts,稳了。

做完后发现还剩半个多小时,便无聊地测起来大样例。结束后一个认识的都没有找到,孤独的我呀!

实际成绩:和估分一模一样。

中午

在某个犄角旮旯吃完了饭盒,便直奔下一个考场,路上还碰上了 ZZH。

S组

考场在 WGY。

还是先把所有题目看一遍,结果有些崩溃,一道题的思路都没有。

于是我决定先死磕第一题。想了一会儿,发现要想让活下来的尽量少,肯定要先后让所有大的把小的干掉,于是轻松 AC。

第二题后来知道是一道经典贪心,但我赛场上没想出来(毕竟绿题也不是那么容易 AC 的),于是打了 O(n^2) 的暴力以及特殊性质 A。

接着是第三题动态规划,我赛场上也没有想出来,只好打 O(2^n) 的暴力。

第四题暴力没打出来,后来一看差点下巴掉下来,怎么 CSP-S 还能有黑题呀!让不让人活了?!

做完后发现还剩半个多小时,便无聊地测起来大样例。结束后一个认识的都没有找到,孤独的我呀!

出来时还结识了 WCY。

洛谷估分 100+70+20=190pts,我好蒻……。

实际成绩:和估分一模一样。

后记

晚上和同学激烈兑现。第二天估了分,过了一下生日(推迟了几天)。

令我有些吃惊的是今年居然一道大模拟都没有,普及组特别简单(除了最后一题)。

想当年我 J 组第一题抱铃,只拿得 105pts 和一个二等奖,现在却取得如此成绩,还真是感慨万千那。