11.15 T2

每一位是独立的 把操作拆到每一位上

如果算出的利用 \(C\) 能组合出哪些些数组 记为 \(tot\) 那么答案就是 \(\sum tot * C\)

考虑 \(k = 0\) 的情况 只能对一个区间异或 \(0\) 或者 \(1\)

对序列进行差分 将区间异或消成单点

将一个操作变成 \(l\)\(r + 1\) 的边 把所有边弄出来 不同连通块之间不会相互影响 对每个连通块进行考虑

考虑一个连通块的任意一棵生成树 设有 \(n\) 个节点 考虑这棵树有多少种方案 每次操作异或两个节点 所以树上 \(1\) 的个数一定是偶数 对一个连通块 考虑每条边是否操作 最多只有 \(2^{n - 1}\) 种方案 用一个点的父亲控制这个点的值是 \(0\) 还是 \(1\) 可以保证用操作将除了根以外的所有点弄成需要的颜色 而根的位置的颜色无法通过父节点改变 所以最少有 \(2^{n - 1}\) 中方案

其实意会一下就是 \(2^{n - 1}\) 种方案

即一个连通块恰好有 \(2^{n - 1}\) 中方案 相当于 \(\frac {2^n}2\)

统计连通块个数 记为 \(cnt\) 意会一下答案就是 \(\frac {2^n}{2^{cnt}}\)

posted @ 2022-11-15 14:45  Ztemily  阅读(38)  评论(0)    收藏  举报