摘要:
"嘟嘟嘟" 这题大意就是有一个DAG,然后添加了一条边,求上有多少种生成树。 这题想了半天,最后还是写了暴力。暴力就是$O(2 ^ mn)$的那种,还出锅了几次:刚开始我不想dfs判断选出的边是否构成树,于是yy了一下,以为只要边数为$n 1$,除了根节点每个点的入度为1且都被访问过就行了。却忘了有 阅读全文
摘要:
"嘟嘟嘟" 裸的矩阵快速幂,构造一个$(k + 1) (k + 1)$的矩阵,把sum[n]也放到矩阵里面就行了。 c++ include include include include include include include include include include using na 阅读全文
摘要:
嘟嘟嘟 第一眼肯定是SAM,然后觉得前缀不好做,就翻过来变成后缀好了。 这样就是所有前缀的最长公共后缀之和。 然后还得知道,parent树上两点的最长公共后缀就是lca。 式子不要拆开,定义每一条边的边权就是$len[fa] - len[p]$,那么相当于求两点之间的路径之和。 考虑每一条边的贡献, 阅读全文
摘要:
嘟嘟嘟 SAM。 把第一个串建成后缀自动机,然后放第二个串上去跑。 匹配到了一个节点,对答案的贡献应该是这个点到根节点的路径上的所有节点代表的字符串个数乘以对应的出现次数之和。 每一个点代表的字符串个数就是$len[p] - len[link[p]]$,出现次数就是$size[p]$,而到根节点的这 阅读全文
摘要:
学了好几天后缀自动机,总算是真正搞懂了,才敢来发博客。 后缀自动机是啥以及怎么构造就不说了,毕竟有很多博客比我讲的好多了。 还是按照国际惯例,推荐几发: hiho一下 127~132周 后缀自动机入门 史上最通俗的后缀自动机详解 先谈谈我对parent tree的理解: 首先由后缀链接构成的树就叫做 阅读全文
摘要:
嘟嘟嘟 这题今天我们学校模拟出了,我没做出来,搞了个暴力得了30分…… 正解现在看来挺显然的,考场上之所以没想到可能是因为第二题就卡住了吧,导致想第三题的时候有些焦躁。 首先,一个奇环是必须要选出一条边的,而一个偶环是一定不能选出一条边的。这也就可以拿到$n = m$的部分分:一遍dfs求出环的点数 阅读全文
摘要:
嘟嘟嘟 今天我们模拟考这题,出的是T3。实在是没想出来,就搞了个20分暴力(还WA了几发)。 这题关键在于逆向思维,就是考虑最后的$n$的个点刚开始在哪儿,这样就减少了很多需要维护的东西。 这就让我想到很久以前的一道NOIP题,铺地毯。那是我第一次接触逆向思维,觉得十分的巧妙,原本要写的很麻烦或者干 阅读全文
摘要:
"嘟嘟嘟" 这题真是一道好题。 看到题中的限制,我就一直想dp,可是设出来的状态都无法转移,最后还是看题解了。 题解真是妙,太妙了。 就是我们构造一个矩阵,满足$a[i][j] = a[i][j 1] 2(j 1), a[i][1] = a[i 1][1] 3$。这个矩阵最大不过$12 18$,于是 阅读全文
摘要:
"嘟嘟嘟" 要是求交错序列的个数和就好了,那我一秒就能切。 换成这个,我就不会了。 我一直想枚举1的个数,然后算出在长度为$n$的序列里,有多少个合法的序列,然后又觉得这好像是什么插板法,但是每一个盒子里必须有球,还不会。查了一下发现这东西$O(1)$还求不了,于是彻底放弃了。 正解是这样的,首先还 阅读全文
摘要:
嘟嘟嘟 前缀和+莫队。 先用前缀和预处理异或,于是问题变成了在$[L - 1, R]$中求两个数异或等于$k$的数对个数。 然后就离线排序,按套路维护两个指针加加减减,并维护一个桶,每一次加$x$,答案就加上$bac[x ^ k]$,并且++\(bac[x]\),删除就减去贡献。 #include< 阅读全文