随笔分类 - Codeforces
摘要:Find String in a Grid 把矩阵按行接起来求一个SA, 把矩阵按列接起来求一个SA, 然后就枚举询问串的转折点, 转换成求矩阵内二维数点的个数。
阅读全文
摘要:Choosing Two Paths 搞不懂为啥我要写换根啊, 这么麻烦。。
阅读全文
摘要:直接把 r 加进去建虚树, 考虑虚树上的dp, 我们考虑虚树的dfs序的顺序dp过去。 dp[ i ][ j ] 表示到 i 这个点为止, 分成 j 组有多少种合法方案。 dp[ i ][ j ] = dp[ i - 1 ][ j ] * (j - have[ i ]) + dp[ i - 1 ][
阅读全文
摘要:U2 把坐标转(x, y)换成(x, y - x * x)之后就是求个上凸包
阅读全文
摘要:Leaf Partition 考虑树形dp dp[ u ][ 0 ] 表示 u 这棵子树处理完, 不能向上延伸的方案数。 dp[ u ][ 1 ] 表示 u 这棵子树处理完, 必须向上延伸的方案数。 dp[ u ][ 2 ] 表示 u 这棵子树处理完, 可以向上延伸的方案数。 然后转移的时候细心一点
阅读全文
摘要:Hot is Cold 好像我写麻烦了, 其实只用线段树维护区间每个数反转, 区间赋值就可以。
阅读全文
摘要:Mobile Phone Network 先把k个边加进去, 然后用m条边从小到达能加就加, 那么对于m条边中剩余的那些边(u, v, w) 只有在树形成的路径(u, v)上存在一条比w大的边才能放进去, 那么路径(u, v)上所有边小于等于w 用每条边更新一次用并查集维护, 用st表压标记可能会T
阅读全文
摘要:可以发现最多只有n个列是有用的, 然后状压dp一下就好了。
阅读全文
摘要:Self-exploration 对于给定的c00, c01, c10, c11, 我们能得出0的段数, 1的段数, 0的个数, 1的个数。 然后就是用隔板法算方案数, 对于小于A这个操作, 我们枚举小于的位置用同样的方法算方案数就好啦。
阅读全文
摘要:Array Game 考虑最裸的dp去求胜负态。 dp[ i ] 从后面的 m 个状态转移过来。 我们考虑如何用线段树维护, T[ i ][ mask ] 表示 i 这段区间如果后面接的m位是mask使时开头m位的mask, 对于修改的话只要维护一个反过来的T2就可以了。 感觉是可以想出来的题, 为
阅读全文
摘要:根据题目描述可知是个特殊的仙人掌, 然后把环扣出来fwt算方案数就好了。
阅读全文
摘要:Two Prefixes 在纸上画了画感受一下可以感觉和循环节有关, 我们把每个可以表示的串写成 pre_a_i + pre_b_j的形式, 我们使得每个串在 i 最大的时候被统计到, 那么我们考虑答案为n * m - 重复的串个数, 对于pre_a_i + pre_b_j 这个串, 我们记b[0]
阅读全文
摘要:Long Colorful Strip 感觉还是一个比较难的区间dp 贴个官方题解
阅读全文
摘要:DFS 考虑dfs的非树边全部都是反祖边, 对于新加的一条边那么所有它一定是一条反祖边, 那么用线段树把 对于这条边不可行的点全部ban掉就好了。
阅读全文
摘要:Yet Another LCP Problem 把sa求出来之后, 对于每个询问用单调栈处理。
阅读全文
摘要:Coloring Game 我写的复杂度是 1000 * 64 * 64 * 64 * log(1e9), 感觉这个东西是很好想的, 肯定是T了的。 其实可以优化掉一个64, 就是在转移的时候用64 * 64的矩阵和 64 * 1的答案相邻相乘, 这样就可以优化掉一个64了, 以前好像没有见过这种小
阅读全文
摘要:Culture Code 排完序之后dp。 dp[ i ] 表示 i 作为最里面一层的最小花费。 way[ i ] 表示得到最小花费的方案数。 然后用Map维护最小值就好了。
阅读全文
摘要:Max Mex 感觉好脑洞的一道题啊。 用0 - n - 1的值建线段树, 每个区间维护 l - r 能否在一条路径上, 保存两个端点。 感觉我的第一思路是二分答案, 然后判断那些点是否在一条路径上, 没想到这两条路径也能合并, 这样就能用线段树维护了。 合并两条路径枚举合并之后的两端点, 暴力判。
阅读全文
摘要:The Fair Nut and Rectangles 很裸的斜率优化呀。 维护直线 维护凸包
阅读全文
摘要:Meeting He 感觉对这种题好无力啊, 以后这种感觉没有办法一次性dp完成的可以考虑用类似于bellman的方法来求最优值。
阅读全文

浙公网安备 33010602011771号