+训

HDU4

1008: 注意到只有 A 限制就相当于最大权独立集. 预处理第 \(i\) 号点正面/反面会导致哪些点必须取正面/反面, 传递闭包后所有限制都只需要在一个端点处考虑且边都是双向的(虽然限制可能不一样). 考虑爆搜, 如果存在 0/1 度点, 就先缩起来; 否则如果存在 3 度点, 枚举其是正面还是反面然后递归; 否则剩下若干个环, 断环成链后线性 dp 即可, 注意这里不能再爆搜. 复杂度 \(o(1.38^n)\).

1012: 相当于删除一个矩形, 这又相当于必须要从矩形左上/右下通过. 考虑左上, 分经过左上方矩形和没经过讨论, 只需要对所有点预处理出从起点/终点出发到他的最大权值, 然后便是二位偏序.

ucup1-13

J: \(m=2\) 的时候状压 dp, \(m\ge 3\) 的时候答案是 \(n\), 构造要求每一个不能和上一个, 上两个相同, 方案数为 \((m-2)^{n-2} (n-1)n\).

K: 把边按度数小的连向度数大的, 枚举 K4 中 \(1\to 2\) 的边, 3, 4 从 1, 2 的出边 bitset and 得到, 需要统计内部边数, 又有每个点出度 \(\le O(\sqrt{n})\), 枚举每条边算对答案的贡献, 是 bitset and 的 popcount, 可能需要逐块处理压空间.

Upsolve:

  • QOJ9125 给定 \(n\)\(a_1,\ldots, a_m\), \(a_i\) 为奇数, 数有多少好的长为 \(2n\) 的排列 \(P\) 满足如下条件: 存在长为 \(2n\) 恰有 \(n\)001 序列 \(s\), 使得对所有 \(1\le i\le m\), \(s_1,\ldots s_{a_i}\) 的众数是 0, \(s_{p_1},\ldots,s_{p_{a_i}}\) 的众数是 0.

一个排列是好的充要条件是不存在 \(i, j\) 使得 \(a_i+a_j = 2n\)\(p_1,\ldots,p_{a_i}\) 恰好是 \((2n,\ldots,2n-a_i+1)\) 的排列. 然后考虑容斥, 分治 fft 维护 dp 即可.

  • QOJ7613 一棵树的答案是 \(n(n-1) \prod_i (n-2)^{\underline{deg_i-1}}\), 枚举点数然后 meet in middle, 令 \(B=5\), 两边分别是 \(deg_i >5\) 的点和 \(deg_i \le 5\) 的点.
posted @ 2024-07-31 20:53  wasa855  阅读(24)  评论(0编辑  收藏  举报