欢迎使用CSDN-markdown编辑器

KMP

考虑 KMP 算法的运行过程,等价于有一些相等和不等关系。不等关系是个弦图,抄一个弦图染色的模板就可以辣!

异或

因为 {a,b,,} {ab,b,,} 答案一样。
考虑高斯消元后的矩阵。
如果非零的行不超过 24 ,可以 224 算出答案。
否则,考虑恰好只有一个 1 的列。设 dp(i,j,mask) 表示考虑了前 i 行,恰好只有一个 1 的列的异或中有 j 1,其他列的异或是 mask . 这部分的复杂度是 40×24×216 .

染色数

首先,删除度为 1 的点。如果一共删除了 l 个叶子,最终答案乘上 cl .

然后,

解法一

考虑 DFS 树,非树边有 m+1n 条。
枚举非树边深度较浅的点的颜色,之后树 DP。
复杂度是 O(nBell(m+1n)) .

解法二

收缩度为 2 的点,剩下 2(mn) 个点。
预处理 same(n) diff(n) 表示长度为 n 的链,端点颜色相同、不同的染色数。
枚举 2(mn) 个点的颜色,其他直接计算。
复杂度是 O((mn)2Bell(2(mn))) .

以上两个做法各有 40% ,并集有 60% .

解法三

同解法二收缩,之后用解法一的树 DP。复杂度是 O((mn)Bell(m+1n)) .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值