CSP2020提高组正式赛 比赛总结

——一句20分的if,一个60分的%d+,两个2.5分的等号和一个炸了65分的人的故事。
这句话官方数据出来以后就没有那么震撼了。
原句:

一句30分的if,一个60分的运算符,两个25分的等号和一个炸了155分的人的故事。

比赛过程

14:30~14:35

监考员在黑板上写了密码,输入了3次才得知某一个写成0的符号是O,再输入了2次才得知前后的括号是密码的内容。

14:35~16:00

点开题目,发现T1是一道看起来很恶心的大模拟题。反正无论如何我都要切掉这道题的,就直接开打了。
先用一个暴力跑出1582年10月4日所对应的儒略日,然后以此为分界点将日期分开。
接着对于1582年10月4日前的日子,直接把公元前4713年1月1日当成0年1月0日来处理,发现这时闰年极其好处理。把天数缩小到4年以内时再把它缩小到1年以内,接着暴力。
最后把小于4713的年份减去4713,大于4713的年份减去4712大概就可以了。

接下来是1582年10月15日以后的日子,一开始想法是先处理1582年10月15日到1584年1月1日(为什么不是1583年,是因为1584年是个闰年,方便后面的处理)的这个区间,再处理1584年1月1日到1600年1月1日这个区间,最后处理1600年以后的年份。
而在年份的处理上,要先缩小到400年以内,再缩小到100年以内,接着是4年、1年,最终锁定日期。细节繁琐,打到16:00时觉得这题要先放一放了,不然后面的题估计都得没分。于是就先做后面的题目了。

16:00~17:30

发现T2是一道真正意义上的签到题。
求出动物一共覆盖了多少个二进制位(记为 x x x),接着答案就等于 2 x − t 2^x -t 2xt,其中 t t t表示 n n n个动物中 2 x − 1 2^x -1 2x1的子集个数。其实 t t t一定是等于 n n n的,但是我当时没有意识到这一点,这也为后来炸了二十几分埋下了伏笔。至于 q q q,完全是没有用的,扔掉就好了。还有可能 x = 64 x=64 x=64,我发现在unsigned long long条件下,

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值