2021/11/15模拟赛

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


T1T1T1 就是个哈希,我给忘了咋整了,含泪丢 404040 分。

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

T3T3T3 骗人,数据没有链。


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值