组合优化,构造与计数
组合优化
这里主要讲决策单调性。
qoj # 9737. Let's Go! New Adventure
首先,直接决策单调性看似有道理,但实际上有缺陷。权值并不是蒙日矩阵。
考虑改一下权值,记 \(w(l,r)=p-c+\frac{\sum_{i\in[l,r]}a_i-\sum_{i=1}^pb_i}{b_{p+1}}\),相当于对当前状态的评估。
此时,区间的权值是关于 \(\sum a_i\) 的连续凸函数。矩阵也因此是蒙日矩阵。决策单调性 \(O(n\log ^2n)\)。
CF2061I Kevin and Nivek
、
构造
P3524 [POI 2011] IMP-Party
逆天绿题构造不会。首先,我们建反图,先把团转化为独立集。这更便于我们思考。
已知有 \(\frac{2}{3}n\) 大小的独立集,求大小为 \(\frac{1}{3}n\) 的。考虑对于一条边,那么其两端点不会同时在独立集里。
考虑直接将这两个点删掉。每次最多删掉独立集中的一个点,删 \(\frac{1}{3}n\) 次剩下的点一定是一个独立集。
CF1365G Secure Password
这个题每个二进制位是独立的。
我们需要找如果某个二进制位只有 \(1\) 个,那么需要找到这个位置,包含这个位置的询问都为 \(1\),其他为 \(0\)。
下意识以为是二进制分组。相当于集合的二分,但是二分两端都要找,这需要 20 次。
考虑我们的询问与答案位置的关系。设我们要找的位置是 \(i\),那么答案为 \(1\) 的询问的交必须为 \(\{i\}\)。
也就是说其他的 \(j\) 至少在答案为 \(0\) 的询问里出现一次。我们需要对于任意 \(i,j\) 满足这个条件。
考虑每个元素被问的询问集合 \(v_i\)。考虑让每个元素在 \(6\) 次询问中出现,这么看 \(C_{13}^6>1000\) 是合法的。
这样的话任意 \(v_i-|v_i\cap v_j|\ge 1\)。所以任意一种询问的答案都对应一个位置 $$
UOJ #751. 【UNR #6】神隐
存在相邻的两条边:必须有询问只有第一条边没有第二条边,且有询问只有第二条边没有第一条边。
考虑故技重施。\(v_i\) 表示 \(i\) 被询问的位置,每个 \(v_i\) 的 popcount 为 \(lim/2\)。
对于一条边 \((u,v)\) 若存在,那么其必定在一个连通块出现 \(lim/2\) 次。否则必定少于 \(lim/2\) 次。
然后你只需要找合法的 \((u,v)\) 即可。暴力是 \(O(n^2lim)\) 的。考虑还有没有别的信息没有利用。
考虑构造树的常见方法删叶子。对于一个叶子那么其一定在 \(lim/2\) 次询问中都为孤立点。
可以不断删叶子,每次在连通块中删点即可。但是我们无法立刻知道一个点的父亲。
我们在一个连通块删除的只剩下一个点 \(x\) 时,显然 \(x\) 是最浅的。我们考虑 \(x\) 的儿子。
那么在过这个连通块的节点肯定都在 \(x\) 的子树中,此时取出还没有父节点的点,它们的父节点设为 \(x\) 即可。
AT_cf17_final_f Distribute Numbers
观察 \(\sum_{i<j}|S_i\cap S_j|\),有两种表示方法,一种是因为 \(|S_i\cap S_j|=1\),所以是 \(\frac{1}{2}n(n-1)\)。
一种是对于每个位置会贡献到 \(\frac{1}{2}k(k-1)\) 对 \(|S_i\cap S_j|\),所以是 \(\frac{1}{2}nk(k-1)\),那么 \(n=k^2-k+1\)。
那么我们先考虑选一个点,然后连出 \(k\) 个大小为 \(k-1\) 的互不相交”团“。此时所有 \(n\) 个位置已经被覆盖。
设此时第 \(i\) 个团第 \(j\) 个元素为 \((i,j)\)(\(0\le i< k,1\le j< k\))。
此时接下来的每个团都必须以上 \(k\) 个团选一个点。
考虑 \((0,i)\) 每个点连的团。设 \((0,i)\) 这个点连的第 \(j\) 个团是 \(S_{i,j}\)(\(1\le i<k,1\le j<k\))。
所以 \(S_{i,j},S_{i,k}\) 互不相交 \((k\neq j)\),\(S_{i,j},S_{k,l}\) 的交为 \(1\)(\(i\neq k\))。钦定 \(k-1\) 是质数。
那么 \(S_{i,j}=\{(p,(j+ip)\bmod (k-1)+1)|p\in[1,k-1]\}\) 即可。
显然 \(S_{i,j},S_{i,k}\) 永不相交;因为 \(k-1\) 是质数,且两个一次函数斜率不同,\(S_{i,j},S_{k,l}\) 必定存在一个位置相交。
我的理解是这种构造没有头绪的话是先钦定”第一个“是怎么构造的,后面再完善。
qoj # 8130. Yet Another Balanced Coloring Problem
首先考虑两棵树分开,然后以子树形式划分子任务。我们不着急给点着色而是等必须要染的时候再决定。
合并子树时,如果出现两个未经处理的叶子,那么就给这两个叶子间连一条边,代表这两个叶子颜色不同。
然后建出两张图。每张图里面都只有长度为 \(1\) 的链,那么两张图合并起来只有偶环。
然后偶环是二分图,所以必定有解。
计数
ARC170C Prefix Mex Sequence
状态设计一个很麻烦的点就是要表示当前 mex 是什么。但是发现这是不必要的。
令 \(A_i=mex(A_{1\sim i-1})\) 只会使种类 +1,所以我们只需要记录当前元素种类数即可。
CF1750F Majority
首先 \(s_1=s_n=1\)。观察样例我们发现应该统计不合法的方案数可能比较容易。
考虑观察一个不合法解经过若干次操作后卡住的形式。那么此时任意相邻的两段 \(1\) 都不能合并。
即如果画成折线图,每个 \(1\) 的高度是递减的。现在相当于给每种非法解分类,然后计数。
考虑一个卡住的情况如何变成一个非法解。发现对于 \(1\) 的连续段是子任务的形式。然后我们可以 dp。
设 \(dp_{i,j}\) 表示 \(i\) 个位置,最后一段 \(1\) 的连续段长度为 \(j\) 的非法解方案数。最后一段 \(1\) 的贡献是 \(2^{j-2}-dp_{j,*}\)。
考虑 \(dp_{i,j}\) 从哪里转移。若从 \(dp_{k,l}\) 转移需要满足 \(l+k< i-2j\)。那么做一个前缀和优化即可。
由于转移是有阶段性的,我们不用实时维护前缀和数组。只需要到下一个阶段重新做即可。

浙公网安备 33010602011771号