摘要:
【BZOJ1499】瑰丽华尔兹(动态规划) 题面 "BZOJ" 题解 先写部分分 设$f[t][i][j]$表示当前在$t$时刻,位置在$i,j$时走的最多的步数 这样子每一步要么停要么走 时间复杂度$O(nmt)$ 得分$40~70$分 (据说这样能过???) cpp include includ 阅读全文
摘要:
Codeforces Round 467 (div.2) 我才不会打这种比赛呢 (其实本来打算打的) 谁叫它推迟到了$00:05$ 我爱睡觉 题解 A. Olympiad 翻译 给你若干人的成绩 让你划定一个分数线 使得所有不低于这个分数线的人都可以获奖 但是$0$分的人一定不能得奖 问你有多少种获 阅读全文
摘要:
【BZOJ2599】Race(点分治) 题面 "BZOJ权限题,洛谷" 题解 好久没写过点分治了。。。 在ppl的帮助下终于想起来了 ~~orz ppl~~ 首先回忆一下怎么求有没有正好是$K$的路径 维护一个表示距离的桶 对于当前重心,依次插入每棵子树的距离值 然后检查是否存在即可 显然加一步,求 阅读全文
摘要:
【BZOJ2998】Problem A(动态规划) 题面 "BZOJ" 题解 一个人的成绩范围可以确定为一个区间 这样就变成了 选择若干区间,不重合, 每个区间有个权值,求最大权值和 这样就可直接$dp$了 cpp include include include include include in 阅读全文
摘要:
【BZOJ4556】字符串(后缀数组,主席树) 题面 "BZOJ" 题解 注意看题: 要求的是$[a,b]$的 子串 和[c,d]的$lcp$的最大值 先来一下暴力吧 求出$SA$之后 暴力枚举$[A,B]$之间的后缀 求一个$lcp$ 复杂度$O(nm)$ $40$分到手 阅读全文
摘要:
【BZOJ4552】排序(线段树,二分答案) 题面 "BZOJ" 题解 好神的题啊 直接排序我们做不到 怎么维护? 考虑一下,如果我们随便假设一个答案 怎么检验它是否成立? 把这个数设成$1$,其他的数字都设成$0$ 最后检查一下这个位置是不是$1$就好啦 但是这样没法排序 那么,我们考虑二分一个答 阅读全文
摘要:
【BZOJ2754】喵星球上的点名(AC自动机) 题面 "BZOJ" 题解 友情提示:此题请不要在cogs上提交,它的数据有毒 对于点名串构建$AC$自动机 然后把名字丢进去进行匹配, 大力统计一下答案即可 当然,要用$map$记录$trie$树 cpp include include includ 阅读全文
摘要:
所有的题目都可以在 "CodeForces" 上查看 中间看起来有很多场比赛我没有写了 其实是因为有题目没改完 因为我不想改,所以就没有写了(大部分题目还是改完了的) 我还是觉得如果是打了的比赛就一场一场写比较好 要不然以后就写有难度的、比较好的题目?? 这场比赛时间真心良心(只是没吃饭) 状态也很 阅读全文
摘要:
【CF235C】Cyclical Quest(后缀自动机) 题面 "洛谷" 题解 大致翻译: 给定一个串 然后若干组询问 每次也给定一个串 这个串可以旋转(就是把最后一位丢到最前面这样子) 问这个串以及其旋转的串在给定的串中出现了多少次 显然,串可以旋转,那么考虑在后面再接一份就行了 匹配的话就是后 阅读全文
摘要:
【Luogu3444】ORK Ploughing(贪心) 题面 "Luogu" 题解 我们知道,如果我们选定了以横向为主,或者纵向为主, 那么就有尽可能减少另一个方向上耕地的次数 所以分开贪心,但是本质相同,所以接下来只考虑纵向为主 既然确定了以纵向为主,那么就要尽可能减少横向操作的次数 所以,只要 阅读全文
摘要:
【Luogu3457】POW The Flood(并查集) 题面 "洛谷" 题解 我们知道,如果一个点和一个海拔不高于它的点相连 那么连在那个点是更优的,所以考虑按照每个点的海拔排序 既然按照海拔排序,相邻的海拔递增的点可以放在同一个集合里面讨论 考虑使用并查集,每一个集合中只需要有一个抽水机即可 阅读全文
摘要:
【CF245H】Queries for Number of Palindromes(回文树) 题面 "洛谷" 题解 回文树,很类似原来一道后缀自动机的题目 "后缀自动机那道题" 看到$n$的范围很小,但是$Query$很多 所以提前预处理出每一段$l,r$的答案 时间复杂度$O(n^2+Q)$ cp 阅读全文
摘要:
【CF17E】Palisection(回文树) 题面 "洛谷" 题解 题意: 求有重叠部分的回文子串对的数量 所谓正难则反 求出所有不重叠的即可 求出以一个位置结束的回文串的数量 和以一个位置为开始的回文串的数量 然后对应的乘一下就行了 求法我用的是回文树 维护每个节点到根节点的距离, 就是回文后缀 阅读全文
摘要:
【SPOJ】NUMOFPAL Number of Palindromes(Manacher,回文树) 题面 "洛谷" 求一个串中包含几个回文串 题解 Manacher傻逼题 只是用回文树写写而已。。 cpp include include include include include includ 阅读全文
摘要:
【BZOJ2160】拉拉队排练(回文树) 题面 "BZOJ" 题解 看着题目, 直接构建回文树 求出每个回文串的出现次数 直接按照长度$sort$一下就行了 然后快速幂算一下答案就出来了 这题貌似可以用Manacher做吧 求出以每个字符为中心的回文串的最大长度 然后搞一下前缀和就行了 cpp in 阅读全文
摘要:
【CF932G】Palindrome Partition(回文树,动态规划) 题面 "CF" 翻译: 给定一个串,把串分为偶数段 假设分为了$s1,s2,s3....sk$ 求,满足$s_1=s_k,s_2=s_{k 1}......$的方案数 题解 反正我是不会做 基本就是照着$laofu$的打了 阅读全文
摘要:
【BZOJ4805】欧拉函数求和(杜教筛) 题面 "BZOJ" 题解 好久没写过了 正好看见了顺手切一下 令$$S(n)=\sum_{i=1}^n\varphi(i)$$ 设存在的某个积性函数$g(x)$ $$(g \varphi)(i)=\sum_{d|i}g(d)\varphi(\frac{i} 阅读全文
摘要:
【BZOJ2342】双倍回文(回文树) 题面 "BZOJ" 题解 构建出回文树之后 在$fail$树上进行$dp$ 如果一个点代表的回文串长度为$4$的倍数 并且存在长度为它的一半的回文后缀 那么就是可行的 如何维护长度是一半的回文后缀? $fail$树上的父亲一定包括了它的所有的回文后缀 因此在$ 阅读全文
摘要:
【BZOJ2565】最长双回文串(回文树) 题面 "BZOJ" 题解 枚举断点$i$ 显然的,我们要求的就是以$i$结尾的最长回文后缀的长度 再加上以$i+1$开头的最长回文前缀的长度 至于最长回文前缀怎么求? 把串反过来前缀不就变成后缀了吗? 所以构造两个回文树就好啦 cpp include in 阅读全文
摘要:
关于回文树的理解 前言 这段时间搞字符串上了瘾? 看起来是的 那就继续搞吧 Part1一些名词 回文串 不想解释什么意思 回文子串 一个串的子串,它是回文串,那么它就是回文子串 最长回文后缀 对于一个长度小于自己的后缀,如果它是回文串,并且不存在比它更长的回文后缀,那么它就是最长回文后缀 最长回文前 阅读全文
摘要:
【BZOJ2882】工艺(后缀自动机) 题面 "BZOJ权限题,良心洛谷" 题解 还是一样的,先把串在后面接一遍 然后构建$SAM$ 直接按照字典序输出$n$次就行了 阅读全文
摘要:
【BZOJ2882】工艺(后缀数组) 题面 "BZOJ权限题,我爱良心洛谷" 题解 最容易的想法: 把字符串在后面接一份 然后求后缀数组就行了。。。 cpp include include include include include include include include include 阅读全文
摘要:
【BZOJ3926】诸神眷顾的幻想乡(后缀自动机) 题面 "BZOJ" 题解 广义后缀自动机啦 求多个串的不同子串个数? 当然是后缀自动机,最后只要把$longest parent.longest$求个和就好啦 那么这题怎么建后缀自动机 能够把所有子串都丢进去呢? 当然不用从每一个节点开始 把树建出 阅读全文
摘要:
【BZOJ3277】串(后缀自动机) 题面 "BZOJ" 题解 广义后缀自动机??? 照着别人的打了一遍。。 相当于每个串都构建一个后缀自动机 构建完一个串之后,直接把当前的last指回root就行了??? 好吧,我觉得我看了一个假的广义后缀自动机。。 不过这道题这样就行了 考虑如何计算一个串在多少 阅读全文
摘要:
【BZOJ5093】图的价值(第二类斯特林数,组合数学,NTT) 题面 "BZOJ" 题解 单独考虑每一个点的贡献: 因为不知道它连了几条边,所以枚举一下 $$\sum_{i=0}^{n 1}C_{n 1}^i·i^k·2^{\frac{n(n 1)}{2}}$$ 因为有$n$个点,所以还要乘以一个 阅读全文