并不会 dp,写了个乱搞的哈希,但是我怀疑正确性有问题。
以下是我的做法:
枚举一段区间,区间的后面部分就一直在尾部处理。处理到区间的右端点时,home 一下(跳到前面),然后从前面开始处理,一直处理到该区间的左端点。注意,这段区间一定得是 t 的一个子段,这可以 hash 判断;并且 t 前面的未匹配部分需要和区间前面匹配,这可以 dp 判断。答案很好计算。注意考虑区间为空的情况。
这是我的思路,并且 赛后写出来了。但是我还是认为它漏洞百出:
- 当这个区间在 t 中出现多次,我选择的是尽量靠前的,以保证该区间前面部分能凑出 t 前面的部分。但是如果靠后的区间也能保证,那么答案会更优。
- 这个程序没有保证区间后面的部分可以凑出 t 后面的部分,只保证了区间前面的部分可以凑出 t 前面的部分。
- 这个哈希并不是很强,但还是过了几十组数据。
希望 dalao 们能给出 hack 数据(不要卡 hash,我想知道这个做法本身的问题),或者说明它是对的,谢谢!