杂题选讲-hjh
杂题选讲-hjh
CF1710D
增量构造,图论构造的等效视角——缩点
考虑如何当 \([1,n]\) 除了 \([1,n]\) 外没有 \([l,r]\) 是一个连通块。
- \(n=2:(1,2)\)
- \(n=3:\) 无解
- \(n\ge 4:(1,n),(1,n-1),(2,n),(3,n),(4,n)\dots (n-2,n)\)
增量构造,每次加入 \(r\),维护极大区间连通块,每次从后往前扫 \(l\),若 \([l,r]\) 信息要求为连通块,则将 \([l,r]\) 内的极大连通块当作单点按上述方法合并即可。注意可以采用左边界进行合并(\(l,r\) 除外)
CF1687E
按每个质因子考虑,事实上是求出最小和次小(非严格)。
但是我们只能加减 \(lcm\) 上的指数,这启发我们考虑 \(\min-\max\) 容斥。
复杂度\(O(n2^n)\) 太高,考虑缩减问题规模。
注意到质因子分为最小次小都是零,最小是零次小非零,最小次小都不是零三类。
若全部的最小次小都是零,就不需要操作了。
否则我们取出后两类中任意一个质因子的最小次小,记作 \(x,y\)。
对于其他的所有质因子,若在两个中都不出现,说明 \(x,y\) 充当其最小次小。若出现一个,则说明出现最小,删掉这个最小后在原序列中找到一个新的最小即可。若出现两个,则直接在原序列中找最小次小。
这样问题是等价的,且最多 \(14\) 个数字,可以容斥计算了。
质因子次数,想办法将复杂度归约到单个数的最多质因子数上面来
CF1466H
对于一组固定的 \(\lbrace b\rbrace\),最优解固定。
因为最优解任意交换两个人的选择,都会变成一个非优解。
考虑限制条件:
- \(i\in S,a_i\in S\),启发我们连实边 \(i\to a_i\),每次选出的 \(S\) 是一个实心环的集合
- 剩余两个条件,不妨看作将更优的选择建虚边。如果存在一个含虚边的环,用其替换原本方案会更优。这告诉我们将实心环缩点后,虚边是一个拓扑结构 \(DAG\)(不成环)
那么就可以使用 \(dp\) 来计算了。
设 \(dp_{S}\) 为当前的虚边 \(DAG\) 连通了集合 \(S\),枚举其最外层 \(T\),从 \(S/T\) 转移过来。
转移系数可以考虑容斥转移,因为我们枚举的最外层是真实最外层的一个子集罢了。
注意到转移系数只与 \(T,S/T\) 的集合大小有关,因此将状态设为每种长度的环的选择个数的变进制数即可。
转移系数是容易的,枚举连出去的边数,以及连出去的集合大小,有 \(f_s=\sum{s\choose i}i!(n-i-1)!\)
CF1844G
注意到我们可以通过 \(d\) 得到每条边的奇偶性,具体地将 \(d\) 只看最后一位,可以改写为异或操作,设 \(dis\) 为树上到根边权的异或和根据 \(dis_1=0\),\(dis_{i}\oplus dis_{i+1}=d_i\),可以推知所有 \(dis\) 进而得到每条边的奇偶性。根据这个可以再改动所有的 \(d\)(减去),处理下一个二进制位即可。
AGC047E
首先若 \(x=y=0\),则如何操作都是 \(0\),不用考虑。
那么我们考虑如何计算。
首先可以轻易地得到常数 \(1\),用 \([0<x+y]\) 即可。
那么我们可以利用类似倍增的操作,求出每个 \(x\) 的二进制位:
从高到低贪心,记录当前值 \(val\),先算出 \(2^i\),然后设 \(o=[val+2^i<x+1]\),则这二进制位有无 \(i\) 就是 \(o\),接着 \(val'=val+2^i·o\)。
然后就得到了 \(x,y\) 的每个二进制位,再合并计算即可。
P6860
可以到达任意点,可以等效为经过有限步操作可以得出 \((0,1),(1,0)\)。
而 \((0,1)\) 等效为 \((1,0)\)。
则以 \((1,0)\) 为例,等价于是在说:\(\exists x,y\in \mathbb{Z},ax+by=1\),且存在 \(x',y'\in \mathbb{Z},x'+y'\equiv x+y\pmod 2,ax'+by'=0\)
因此首先可以得到 \(\gcd(a,b)=1\),所以不会都是偶数。
当 \(a,b\) 都是奇数时,\(ax+by-(ax'+by')=1=a(x-x')+b(y-y')\),但 \(a(x-x')+b(y-y')\equiv x+y-x'-y'\equiv 0\pmod 2\)
因此是无解的。
而 \(a,b\) 一奇一偶,不妨设\(a\) 为奇数,则构造也是容易的,\(a(x+1)+b(y+1)-(1+x+y)(ax+by)=0\),整理后易得 \(x'+y'=-(x+y)^2+2\)
而 \(-(x+y)^2+2\equiv (x+y)^2 \equiv x+y\pmod 2\)
得证。
因此充要条件是 \(\gcd(a,b)=1,a+b\equiv 1\pmod 2\)
考虑在 \(\max(a,b)\) 处统计答案,若 \(\max(a,b)\) 为偶数,答案显然是 \(\varphi(\max(a,b))\),否则是 \(\frac{1}{2}\varphi\),因为 \(\gcd(a,b)=\gcd(b-a,a)\),奇偶成对出现。
答案就是:
对偶数位求 \(\varphi\) 是这样的。
使用杜教筛即可。
CF878D
直接维护这个操作肯定是不可行的,但是注意到最开始的 \(k\) 很小。
那么沿用利用二分答案转化为 \(01\) 序列版本的方法,\(\le ans\) 记作 \(1\),\(>ans\) 记作 \(0\) ,我们考虑二分答案,那么就相当于最开始给定了 \(a_0,a_1\dots a_{k-1} \in \lbrace 0,1\rbrace\) 每次操作两个数做 \(\&\) 或者 \(|\)。
这就很 OK 了,注意到所有可能的初始序列只有 \(2^k\) 种,我们不妨预处理答案 \(f_{i,S}\) 为操作后的第 \(i\) 个数组,在最开始的 \(a_0\dots a_{k-1}\) 为 \(S\) 时,得到的数字是 \(f_{i,S}\)。
计算答案就可以把这一列的值拿出来排序,二分查找答案。
可以 bitset 优化,做到 \(O(\frac{q2^k}{w}+qk\log k)\)。
涉及到 min/max,单点求值——利用二分答案转化01序列进行操作
CF643F
第一次遇到从 信息获得 角度做的题目。
设 \(i\) 天的答案是 \(R_i\),本质上,是通过 \(n\) 个熊和 \(p\) 个床能够区分的最多情况数
那么一个情况是如何区分的?有没有熊喝到了一个方案的酒,而同时在另一个方案里没有喝到酒。
所以方案区分,还应该是看 醉酒的熊,假设每一种不同的醉酒情况(哪些熊醉了,什么时候醉的)都可以区分一种方案,那么 \(R_i\) 就是醉酒情况数。
但是——在策略相同的情况下,不同的酒放置位置就对应了唯一的醉酒情况,醉酒情况也对应唯一位置。
这告诉我们 \(R_i\) 就是醉酒情况数,也就是枚举醉酒熊数,再算哪天醉的
这个达到也是容易的,可以考虑每个酒桶位置情况,将其插入其对应醉酒情况的那些熊的某天的饮酒集合。由于酒桶只有一个,所以不同情况互不影响。
那就说明了这个式子的正确性。

浙公网安备 33010602011771号