2021/11/15模拟赛

8 : 30 − 9 : 00 8:30-9:00 8:309:00
看题,认认真真读了一遍 T 4 T4 T4 都没明白什么意思,所以就不看了,直接放弃。乍一看还很像 博弈 ,但是其中一个是带着一定套路的,所以应该模拟可水分。
9 : 00 − 9 : 30 9:00-9:30 9:009:30
肯定是左右两边开始,尽量匹配短的串,然后往中间靠。
写了个伪 哈希 ,忘了咋 O ( N ) O(N) O(N) 求长度为 N N N 的字符串任意字串的 哈希值 了,肥肠难过。
9 : 30 − 9 : 40 9:30-9:40 9:309:40
手推 H a s h Hash Hash 的式子啥的,搞不出来。
9 : 40 − 10 : 10 9:40-10:10 9:4010:10
T 2 T2 T2暴力模拟 很好写,没推出啥东西所以只写了 20 20 20 的暴力
10 : 10 − 11 : 00 10:10-11:00 10:1011:00
T 3 T3 T3 本来想写 倍增求LCA 或者 树链剖分 之类的,但是想想还是写 Floyd 效益高点,但是码到一般又忘了书上的板子,还是凭借动态规划的经验又推了推才出来。
11 : 00 − 12 : 20 11:00-12:20 11:0012:20
想了个奇怪的 T 1 T1 T1 写法,把左右两边拆开想,在右边的话建一个类似链表的东西,连着相同的字母。从左边的第 i i i 开始跟右边的匹配,匹配不上就往前跳。如果到最后第 i i i 个字符都匹配不上就也不匹配其他字符了。加了些剪枝,调试很麻烦。
12 : 20 − 12 : 40 12:20-12:40 12:2012:40
T 3 T3 T3 特殊数据 20 20 20 分的链。
12 : 40 − 结 束 12:40-结束 12:40
检查文件名,freopen,和版本问题。


T 1 T1 T1 就是个哈希,我给忘了咋整了,含泪丢 40 40 40 分。

T 2 T2 T2 思维和代码实现能力还是哪个还有很大的进步空间,三位偏序,还得有个存曼哈顿距离。

T 3 T3 T3 骗人,数据没有链。


原来我一直用的都是错误的 哈希,难怪不会求子串。
如字符串 ′ a b d ′ 'abd' abd 在存的时候,正确的方法应该是
刚存 ′ a ′ 'a' a h x = 1 hx = 1 hx=1
存成 ′ a b ′ 'ab' ab h x = h x ∗ P + 2 hx = hx * P + 2 hx=hxP+2 P P P 为一个质数 , 2 2 2 是因为 ′ b ′ − ′ a ′ + 1 = 2 'b' -'a' + 1 = 2 ba+1=2而并不是因为下标为第 2 2 2 个。
存成 ′ a b d ′ 'abd' abd h x = h x ∗ P + 4 hx = hx * P + 4 hx=hxP+4
′ a b d ′ 'abd' abd 就可以表示为 ( ( 1 ∗ P + 2 ) ∗ P + 4 ) ((1*P+2)*P+4) ((1P+2)P+4)
相当于是 P 2 + 2 ∗ P + 4 P^2+2*P+4 P2+2P+4
′ a b d ′    =    ′ a ′ + ′ b d ′ 'abd'\; = \;'a' + 'bd' abd=a+bd,所以就可以通过 P 2 + 2 ∗ P + 4 − 1 ∗ P 2 P^2+2*P+4 - 1*P^2 P2+2P+41P2 得到 ′ b d ′ 'bd' bd
这里的 − 1 ∗ P 2 -1*P^2 1P2 是因为 ′ b d ′ 'bd' bd 长度为 2 2 2
验证下:
′ b ′ 'b' b时为 2 2 2
存下来 ′ b d ′ 'bd' bd 就是 2 ∗ P + 4 2*P + 4 2P+4

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值