一铭君一的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++

posted @ 2020-11-08 09:16  ZTer  阅读(105)  评论(0编辑  收藏  举报