这几天我看的是KMP,因为上次比赛我的字符串 查找的题,没有做出来,而有人用KMP做出来了,当时我就看到了差距,因为我感觉我都没见过KMP,而他们都会用了。所以这几天一直在研究这个。
其实KMP的关键就在于查找子串中的重复子串。关键的式子就是:
while(j&&a[i]!=a[j])j=f[j];
这里的f[j]存放的是从前面开始有连续重复字符的个数,这个地方非常巧妙,大大的减少了不必要的查找时间。其他的地方主要也是利用这个数组。
感觉收获很大,虽然还是感觉跟别人比落下了很多,但是我会慢慢补上来的。
这几天做了两个线段树的题,一个是区间更新一个是单点更新。我感觉模板比较固定,只要找好思路就行。但是还是感觉TLE实在是太烦人了。我的单点更新一直TLE,最后在输出的时候少了一个if判断就过了。感觉不爽。
希望下次写训练日记的时候线段树能做更多的题。