2021.10.29模拟赛

本文记录了一名开发者在比赛中的时间管理和解题过程,从T1的Trie树到T4的规律发现,详述了遇到的挑战和反思。重点讲述了如何构建可持久化Trie树解决字符串问题,以及T2的贪心策略和T3的错误思路调整。最后强调了时间分配和暴力解法的重要性。
摘要由CSDN通过智能技术生成

时间安排

7 : 55 − 8 : 20 7:55-8:20 7:558:20 把四道题都看了一遍,T1,T2感觉可写,T3看上去像tarjan,T4没什么思路。
8 : 20 − 9 : 00 8:20-9:00 8:209:00 看到前缀和后缀很容易想到trie树(后缀就是反串的前缀),就考虑对n个字符串建一个tire树,再记录一下l和r表示在tire树上的位置,再将字符串反过来建一个可持久化trie树来统计答案。对于每一组询问,先在普通trie树上查找前缀所在的区间l和r,然后在可持久化tire树上用前缀相减求出答案。
9 : 00 − 10 : 00 9:00-10:00 9:0010:00 一直在调tire树,很久都没码过可持久化数据结构了,细节很多,比如在树上的位置要不停的更新,可持久化的赋值,加权。最后样例是过了,自己造了几组小数据也过了,就去看T2了。
10 : 00 − 10 : 30 10:00-10:30 10:0010:30 对于T2,首先区间一定越长越好,因为这样一个最大值的贡献才会最小,当时的想法是贪心,对于整个区间求出最大值所在的位置,然后向左右扩展,直到第一次出现重复的元素,然后将剩下的区间递归处理,每次累加一下最大值,最后输出答案。
10 : 30 − 11 : 10 10:30-11:10 10:3011:10 对于T3,我的第一想法是tarjan求所有的桥边,然后记录ans1为桥边中属于原树的边的数量,ans2为桥边中属于新增的边的数量,然后答案就是 a n s 1 ∗ a n s 2 ans1*ans2 ans1ans2,很明显是错的,因为不一定只有两条边都是桥边的情况才能使图不连通,我先写了一个暴力,就是对于枚举所有的边,标记一下要删的边,然后dfs判断是否联通,看着时间不多码完就先去看T4了。
11 : 10 − 11 : 50 11:10-11:50 11:1011:50 T4很有意思,很明显,K是有规律的,我先推了一下样例,我最初的想法是暴力求出n和2n的答案,然后答案就是 a n s 1 + ( a n s 2 − a n s 1 ) ∗ ( K − 1 ) ans1+(ans2-ans1)*(K-1) ans1+(ans2ans1)(K1),但是错的,因为你不能保证以后的K不会对之前的有影响。我先试着推了推K=1的情况怎么写,刚开始我的想法是对于先把环处理一下,又是个环就ans++,然后把环去掉,对于接下来的字符串,如果对于 s [ i ] s[i] s[i] 来说, s [ i − 1 ] s[i-1] s[i1] s [ i + 1 ] s[i+1] s[i+1] 都与 s [ i ] s[i] s[i] 不同(这里的不同指的是不在同一行或同一列,即一个为’W’,一个为’N’,或一个为’W’,一个为’S’),然后 s [ i − 1 ] s[i-1] s[i1] s [ i + 1 ] s[i+1] s[i+1] 在相同的情况下又要本质不同,这样就可以求出 s [ i ] s[i] s[i] 之前的最长的 s [ i − 1 ] s[i-1] s[i1] 串和 s [ i ] s[i] s[i] 之后的最长的 s [ i + 1 ] s[i+1] s[i+1] 串的最小值,直接累加到答案。

反思

我到现在还是不理解为什么我T1的代码会挂,我觉得写的没问题,而且过的数据还都是大数据,然后小数据WA了,我对T1寄以厚望,觉得能A才花了将近两个小时,导致后面的时间很紧,静不下心来思考,总体来说还是时间安排有问题。以后还是苟起来打暴力吧,连续两场考试我都有AC的心,但教训太惨痛,苟起来坐等大佬翻车。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值