Atcoder abc294
https://atcoder.jp/contests/abc294/tasks
Ex - K-Coloring
n点无向图
m 边
点赋值 [1,k] 相邻点值不同的方案数 mod 998244353
n 30
m [0,30]
k 1e9
8s
1024mb
我的思路
m 30, n 30, 想到的30相关的就是2^{30/2} 的meet-in-the-middle, 但没什么具体的想法
方案统计
对于一个具体方案,考虑按照 点的index顺序从小到大交换
例如 1染色x , u染色1, 那么把所有x和1染色的交换成1和x, 那么得到的依然合法
这样 index顺序虫小到大 染色c个的方案数 f(c)
ans = sum f(c) A(Permutation)(k,c)
1 | dfs(u, cntcolor){ |
感觉复杂度会爆炸?吧?
不同难搞,要不然就是反过来容斥 相同
属性i = 边i连的两点颜色相同
ans = sum (-1)^count(属性…) g(属性…)
这个问题就是 $2^{30}$太大, 需要拆分
右侧的g()=k^{未连通块个数}