摘要:
文本生成器 要记住一点,$next[now][c]$指向的是在$now$指向的这一节点所表示的字符串$S$再添加一个字母$c$所能形成的字符串。有两种可能,①存在$S’=S+c$,②存在$S'$为$S+c$的最长真后缀,也就是说,要再目标串中看有多少模式串,只需要在遍历目标串的时候无脑往后面加字符$ 阅读全文
摘要:
C - Planar Reflections 参考:Codeforces 1498C - Planar Reflections (DP) 对于 dp 而言,就是要发现其中可以递推的东西。 \(dp[i][j]=dp[n-i][j-1](表示反射的粒子)+dp[i-1][j](表示穿过的粒子)\) 第 阅读全文
摘要:
D - Returning Home 参考:D:Returning Home-Codeforces Round #675 (Div. 2) 最短路的题难点在于建图,这道题的图不是特别难建 思路:对于每一个点,分别与 x 轴和 y 轴上相邻的两个点,连边,然后起点与每一个点连边即可。 //Create 阅读全文
摘要:
F. Fruit Sequences 参考:tutorial 遇到这种求$\sum_^n\sum_^nf(l,r)$的一般情况下都是固定一个端点,然后快速求解值即可。 这种题的解决办法就是寻找不同状态之间是如何转移的,然后要能够很快地转移过去,然后就可以得到答案了。 #include <bits/s 阅读全文
摘要:
自定义哈希 struct custom_hash { static uint64_t splitmix64(uint64_t x) { // http://xorshift.di.unimi.it/splitmix64.c x += 0x9e3779b97f4a7c15; x = (x ^ (x > 阅读全文
摘要:
Censored! 其实这题的思路也大同小异,利用AC自动机建 trie 图之后,构建可达矩阵,可达矩阵 m 次方后,第一行的值就是答案。需要注意,这个题的答案很大,需要用到高精度,所以把高精度跟矩阵乘法结合即可。 如果单纯只是这样的话,先会 re 然后再 t,wa 是因为读入的字符串的范围是$[3 阅读全文
摘要:
考研路茫茫——单词情结 这个题也是用AC自动机记录状态,然后得到状态转移矩阵。 因为这道题求的是包括词根的,所以我们先得到不包括词根,然后再用总数减去即可得到。 另外需要注意的一点是,长度不超过L,这又跟之前写的那道限定长度的题不同了,需要在矩阵中再添加一列,用于求和,这一列的值全为1,通过,手推即 阅读全文
摘要:
DNA Sequence 参考:AC自动机+矩阵快速幂 POJ 2778 先用AC 自动机保存其状态,用end数组标记那些不能到达的点,并且要注意的一点是如果一个病毒串为abcdef,另一个病毒串为aaabcdef,不止是需要标记这两个串,还需要标记aaabcdef和aabcdef,这个可以在进行自 阅读全文
摘要:
Catching Cheaters 其实就是把最长公共子序列的 dp 维护的值变为$4LCS(C,D)-|C|-|D|$的值就好了。 #include<bits/stdc++.h> using namespace std; const int maxn=5005; int dp[maxn][maxn 阅读全文
摘要:
AC自动机 求解一个目标串匹配多个模式串的问题 下面模板求解的是有多少种模式串在目标串中出现 // Created by CAD #include <bits/stdc++.h> #define mst(name, value) memset(name,value,sizeof(name)) usi 阅读全文