限时一秒的匹配靠什么过
文本有一百万个字、模式几千个字,还要在 1 秒内找完。真正能保证过的是【0】。
补全 next 数组
场景:实验机上 ~/work/str/kmp.cpp 用 KMP 找模式的全部出现位置,但 build_next 还是空的。 任务:补全 build_next。make 编译,./kmp < sample.txt 自测;check 会
一百万字的文本里找
场景:~/work/str/count.cpp 数模式在文本里出现几次,结果对,但文本一长(10^6)、模式一长(几千),就要跑十几秒。 任务:改写 count.cpp,让大数据在 1 秒内算完,输出格式不变。make 编译(-O2)后自测
写 Trie 数前缀
场景:~/work/str/trie.cpp 按指令往词典里放单词、问以某个前缀开头的单词有几个,add_word 和 count_prefix 还没写。 任务:补全这两个函数。make 编译后自测;check 会用随机指令序列对拍。 可操
修好子串哈希
场景:~/work/str/sub.cpp 用前缀哈希判断两段子串是否相同,可明明一样的两段它常说不同。 任务:修好 get(l, r) 的公式。make 编译后用 sample.txt 自测。 可操作范围:只在分给你的这台实验机上操作。可
让哈希判错一次
场景:~/work/str/eq.cpp 只拿哈希值判断两个串是否相同,模数只有几千。 任务:按 ~/题目.txt 的要求,找两个不同、长度都符合要求的小写字母串,让 eq 输出 same,写进 ~/work/str/answer.txt(
修好 Manacher 越界
场景:~/work/str/pal.cpp 用 Manacher 求最长回文子串的长度,带着内存检查一跑就报越界。 任务:修好往外扩的那个 while 条件。make 编译(带内存检查)后自测,内存检查不报错、结果正确才算过。 可操作范围:
测过了和证明了差在哪
一个算法在一万组数据上都跑对了。这件事和「它是对的」之间的差距是【0】。
对拍能给出什么样的结论
第 1 步:两种判素数的写法对拍 第 2 步:前面这些,两边都一致 第 3 步:到这一个,两边分叉了 第 4 步:一致只说明测过的那些 116 117 118 119 120 121 拿另一种写法对拍,两边结果一样。这说明【0】。
一个反例能说明什么
找到一组输入让算法给错了答案。这一组输入【0】。