那些年我犯过的**错误

2021 CSP 7连测 day3


时间分配

6:00~6:10 赶到机房的路上

6:10~6:15 审T1题

6:15~6:35 淦T1代码

感觉太简单了,又检查了几遍,发现似乎没什么细节(但谁知道呢?,于是我开始淦T2了

6:35~6:36 审T2题并发现了一个很惊悚的事情

看题的第一眼, w o c woc woc !!!这不是第一章例题 费解的开关 吗???
我直呼内行,然后开始苦逼的码代码。。。

6:32~7:15 开始淦代码,然后发现我太单纯了

思路会了,我就以为我会了。
然后发现我错了,大错特错!!!
太难码了,但我还是成功了(对不对就不知道了。。。

7:15~7:25 审T3题并淦暴力60代码

部分分很友好,然后我先去码下一题了

7:25~8:25 审T4题并淦暴力60代码

开始正经写考试思路了:
可以建回文树,可求出一个字符串的回文子串的个数。然后每次暴力枚举,修改每一位的字符,再根据新组成的字符串重新建树。将所以枚举的答案取 m a x max max 即可。(预计60分
想法很简单,但不太好写。。。

8:25~8:30 重新看T3,越看越不对劲

w o c woc woc !!!又写过(具体在哪做的忘了。。。
记得好像是 01   t r i e 01\ trie 01 trie。。。(然而不是)

8:30~8:50

想了又想,想到需要建两个 t r i e trie trie 树,然后比较???但怎么在 O ( n ) / O ( l o g   n ) O(n)/O(log\ n) O(n)/O(log n) 的复杂度判 1 1 1 的个数还没想出来。。。然后我又转移战场了。。。

8:50~?:??

写总结。。。


赛后总结反思

T1 斯诺克

A了!!!

T2 翻转

又A了!!!

T3 数对

和估分一样呢!!!

正解:
考虑优化。可以用一个数组记录 a i   x o r   ( 2 x ) a_i\ xor\ (2^x) ai xor (2x) 出现了几次,因为可能存不下,需要用 h a s h hash hash 存储;然后可以统计有多少个 a i a_i ai b j b_j bj 相等,减去这个数乘 30 30 30,最后答案除以 2 2 2(因为会有重复。

T4 回文串

复杂度算错了,应该是25分。。。

正解:
可以考虑 M a n a c h e r Manacher Manacher 暴力切换字符。能拿25分。
发现切换字符是肯定不会切换成没出现过得字符,所以只要 O ( n ) O(n) O(n)将出现过的字符统计一下,然后能多拿5分 蚊子再小也是肉
考虑正经优化,因为当将位置 i i i 的字符切换成 c c c,会有一些回文消失,也会有一些新的回文出现。
所以先考虑消失的回文,当这个回文的中心为 a a a时,切换的回文位置在区间 [ a − r a , a + r a ] [a-r_a,a+r_a] [ara,a+ra] 时才会消失(好像要用扫描线;再考虑新的回文,当这个回文的中心为 a a a,则回文的半径为 d = a − i d=a-i d=ai,显然字符串 w a − d , a + d w_{a-d,a+d} wad,a+d 之前不是回文,但字符串 w a − d + 1 , a + d − 1 w_{a-d+1,a+d-1} wad+1,a+d1 在之前时也回文,且是以 a a a 为中心的最长回文,因此 d = r a + 1 d=r_a+1 d=ra+1 h a s h hash hash+二分查找计算 r a r_a ra


预计分数

100+100+60+60=320(大概可能也许应该估计会高那么 y i yi yi 丢丢)

实际分数

100+100+60+25=285(T4估分应该为25的,算错了。。。


反思

  • T1、T2正确率还可以,下次尽量保持(速度还是要练一练,第2题花的时间有点长。
  • T3应该再好好考虑的,不到最后一刻千万不能放弃挣扎(能不能做到就另说了。。。在考试是不能根据一点就死磕,毕竟正解也不是我以为的 01   t r i e 01\ trie 01 trie,一条路不行还是要考虑换一条的,一点一点优化总能成功的。
  • T4告诉我计算复杂度一定要小心,我就是算错了以为能拿60分就直接不想了,但没发现其实只有25分,拿五分的优化其实考试也想到了,但按60分的算法优不优化都没区别的,我就成功与那5分失之交臂。。。

总之,继续加油!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值