摘要:
因为本人几乎不会后缀数组,所以遇到这种SA的模板题也要拿SAM解决。 还是有一点思维难度的。 首先按照国际惯例,建反串的SAM。 然后对于这个反串,我们考虑两个前缀哪一个字典序小:因为是串是反的,所以要从后往前比较,那么第一个不相同的字符一定是两个前缀在后缀树上的节点的lca的前一位。记其中一个节点 阅读全文
摘要:
嘟嘟嘟 如题,FFT残缺字符串匹配。 简单来说,就是定义一个匹配函数,然后稍稍推一下柿子。 细节来不及写了,推荐luogu的第一篇题解,讲的特别好。 (没事别开long double,这东西慢的很) #include<cstdio> #include<iostream> #include<cmath 阅读全文
摘要:
嘟嘟嘟 这题思路还是挺奇特的,神奇的利用了自由元的性质。 看到这种题,第一反应是设$2 ^ n$个状态,然后解方程组。但对于这题来说显然过不了。 我们还是用高斯消元,对于每一个开关$i$,令$f[i][n + 1] = a[i]$^\(b[i]\),$a[i]$表示$i$的初始状态,$b[i]$为结 阅读全文
摘要:
嘟嘟嘟 这题没卡带一个$log$的,那么就很水了。 然后我因为好长时间没写矩阵优化dp,就只敲了一个暴力分……看来复习还是很关键的啊。 这个函数显然是从后往前递推的,那么令第$i$位的分子分母为$x', y'$,第$i + 1$的为$x, y$,因为$f(i) = a_i + \frac{1}{f( 阅读全文
摘要:
嘟嘟嘟 离NOI最后一周,把自己容易忘的知识点和板子复习一下。 (刚答完loj的笔试模拟,感觉上不了90……) update:哦,我89…… 先把式子写出来,每一个妖怪的战斗力$S(i) = A + \fracD +D +\fracA$。 令$k = \frac$,于是$S(i) = D *k + 阅读全文
摘要:
"嘟嘟嘟" 好久没写LCT,真的忘了好多。 这道题是用lct维护子树大小。 众所周知,最基础的lct只能维护树链上的信息,而因为虚实边的划分导致不能直接维护子树信息。 所以对于每一个点,我们多维护一个变量$si$,在这道题就表示这个点在原树上所有虚儿子的子树大小之和。 为了防止弄混,我用$all$表 阅读全文
摘要:
嘟嘟嘟 这题有那么难???? 提供一个吊打std的做法 直接令$dp[i][j][0/1]$表示前$i$个数的和模$p$为$j$,且这$i$个数中没有/有质数的方案数。 先想一下暴力,枚举第$i$个数是哪一个,然后根据这个数是否是质数转移即可。复杂度$O(nmp)$。 优化: 发现$n \leqsl 阅读全文
摘要:
"嘟嘟嘟" 在GX大佬cyh的提议下,我就开了这道题。 看到位运算,就想到每一位单独考虑。 那么对于$AND$操作,我们只要找全是1的子矩阵个数。 对于$OR$操作,用子矩阵总数 全0子矩阵个数即可。 这样就有一个$O(n ^ 4 logN)$($N$是值域)的做法了,可以拿到50分。 然后我就没想 阅读全文
摘要:
嘟嘟嘟 此题很可做。 首先从一个暴力的dp入手:令$dp[i][j]$表示第$i$个数为$j$时的数列个数,于是有$dp[i][j *a[k] % M] += dp[i - 1][j]$。 但这个似乎只能拿10分。 一个显然的优化是改成倍增快速幂的形式,上述dp方程显然是可以合并的,即$dp[x + 阅读全文
摘要:
嘟嘟嘟 我认为这题是黑题的原因是质数不是$998244353$,所以得用三模NTT或是拆系数FFT。我抄了一个拆系数FFT的板子,但现在暂时还是不很懂。 但这不影响解题思路。 首先$n> K$无解。(完全搞不懂$n$那么大干啥) 我们令$dp[i][j]$表示第$i$个数有$j$个$1$时的方案数。 阅读全文