一铭君一的CSP2020打铁记
Day 0
中午从济南出发,因为疫情原因,只能自驾。
坐了3个小时车(听了3个小时歌),到了日照,母后的老同学请我们吃饭,但是因为嫌吵,我就先行告退回酒店了
本来想复习一下各类算法的,但是想想明天估计也就是暴力暴力暴力,索性玩了3个小时中国式家长,然后到头闷睡
Day 1
因为S组是下午考,所以早上一直睡到十点(酒店的床太软了,睡得腰疼
起来之后收拾收拾东西,自己一个人去海边转了一圈,听听大海的声音,吹吹海风,默念CSP2020 rp++
中午还是母后的老同学请吃的饭,差不多1点半,到了考场
进去考场之后,本来该有20分钟的试机时间的,但是我们的监考老师也就给了10分钟左右,刚打完快读和头文件就控屏了
然后发压缩包解压密码的时候,发错了好几次,导致我们晚了5分钟才看到题面
考试实况
T1 无脑模拟+计算(话说真的是给新疆人做的吗
发现儒略历比较好处理,因为没有400年一闰的规定,只要满四年就一闰
然后发现4713 BC是闰年,那么从4713 BC到1582都是“闰平平平”的结构
算出4年轮回是1461天,先算出来几个轮回,然后-4713+轮回数*4
再处理在第一年(闰)还是二三四年(平)十二个月份依次减掉对应的天数,算出日期
因为后面的格里高利历不好处理,先滚去看T2
期望得分:40pts
2020.11.10 民间数据自测 0pts,爆零纯属代码能力不行,没什么好抱怨的
2020.11.18 CCF官方数据测试,实际得分 0pts
T2 模拟
要求把每一个动物的编号(十进制转化为二进制)若二进制的\(p\)位为\(1\),那么需要买第\(q\)种饲料
前两个数据点比较小,我想到用桶处理饲料买了还是没买,\(2^k\)枚举每一种动物可不可以养的思路
先把动物园里已经有的动物二进制处理出来,然后按照给定的\(p\)标记给定的\(q\)
枚举\([0,2^k)\)所有的编号,处理每一个十进制编号为二进制,然后按照给定的\(p\),查询\(q\),如果对于所有的\(p\),\(q\)都为真,那么ans++
这样统计出来最多可以养多少动物,然后减去已经养的动物数,就是答案
期望得分:40pts
2020.11.10 民间数据自测,实际得分 40pts
2020.11.18 CCF官方数据测试:实际得分 40pts
T3 模拟
T3读题花了比较长的时间,发现对于编号为\(i\)的函数,要么是\(j\)加\(v\)(1类),要么是所有乘\(v\)(2类)或者是其他一堆编号为\(C_j\)的函数组合起来(3类)
那么先开结构体,根据输入处理出每个函数的类型,如果是1类,那么记录\(j,v\),2类记录\(v\),3类记录组合函数的所有名字
然后写一个递归函数work( ),调用输入的编号为\(x\)的函数,对于1,2类直接操作,3类就把每个包含的函数编号都work( )一遍,最终一定会递归完
然后暴力输出结果就行了,记得开ll,取模
期望得分:20pts
2020.11.10 民间数据自测 0pts,(模数998244353看成了98244353,真想抽自己一巴掌)
2020.11.18 CCF官方数据测试 0pts
T4 疑似博弈论
发现\(n=3\)时,答案只有两个:1或3
要么是一开始的最强蛇吃了两个比它弱的蛇,要么是最强蛇不吃,直接结束(如果吃了最弱,下回合会被一开始的次强蛇吃掉)
那么很好判断了,先开结构体,存进去每个蛇的编号和战斗力,然后按题目要求排个序
看看最强蛇吃了最弱蛇之后,会不会被次强蛇吃掉,如果它吃了最弱蛇就会被次强蛇吃,输出3,如果都能吃,输出1
\(n=10\)似乎可以爆搜处理一下吃蛇选择,但是似乎很麻烦,就没有打,回去看看T1的格里高利历部分分
期望得分:10pts
2020.11.10 民间数据自测 10pts
2020.11.18 CCF官方数据测试 20pts
滚回T1
处理1582年10月5日之后的情况(我算出来从4713 BC到1582.10.4总天数)
用儒略日减去总天数,看看还剩几天,然后暴力判断是在1582年的10月还是11月还是12月
不在1582年,减去1582.10.14到年底剩下的天数,下一次从1583.1.1开始计算
然后先按照400年大轮回算,1583-后是平闰平平,处理出400年的规律
然后处理出100年的规律,再处理出4年的规律,最后确定年份,for(1 to 12)确定月份和日期
考试结束的时候还没有调出来,并且导致T2,T3没有检查(实际上T3像前面说的,真的挂了20opts)
晚上坐车滚回济南,没啥好说的
估计最高得分:110pts
自测总分 50pts,T1挂掉40pts,T3挂掉20pts
实际得分 by CCF:T1 0pts+T2 40pts+T3 0(20)pts+T4 20pts=60(80)pts 省三(二)等奖
如果拿到T3的暴力20分,就省二了(懊悔面具+痛苦面具+暴风哭泣求安慰)
@T1出题人
这样的题目真是优秀,希望您母亲在天上翱翔的时候,没淋着雨
Day 2
还想Day 2翻盘?不存在的!
——CCF 中国计算机学会
说实话,晚上做梦的时候梦见全挂了然后爆零,直接退役/kk,Day2早上起来写了这篇游记
总结一下吧,比赛的时候细致真的很重要。另外看清楚题目要求,想不出正解抓紧打暴力
不要对自己代码能力太自信,比如这次的T1,没有调出来。如果打day by day模拟+离线处理的话,有80pts,就算在线day by day,也有20pts
如果不回去调T1,假如检查到T3的话,也许会发现模数98244357搞错了,还能避免20(35)pts的挂分
可是历史老师说过:
过去的,都是历史,回不去的……
还有机会,所以所以所以下次NOIp,要细致啊,要给自己的OI生涯,画上一个圆满的句号
希望能抱着省一等奖光荣的退役,NOIp RP++