做题记录 26.2.22
QOJ #1262. Justice For Everyone
按 \(a\) 从小到大重排序显然不改变答案,若 \(b\) 不是有序的显然无解,若存在 \(a_i>b_i\) 则无解
令 \(d_i=b_i-a_i\),则操作次数为 \(t=\frac 12\sum_i d_i\),若无法整除则无解
假定每次选择的两个位置有序,最终答案除以 \(2^t\) 即可
先考虑没有整个过程中值互不相同限制的情况
每次操作选择两个增加,此时要求选择的两个 \(a_i\) 不能相同,对其容斥,钦定 \(s\) 次操作选择了相同的 \(a_i\),则贡献为
令 \(c_s=(-1)^s \binom ts s! (2(t-s))!\),\(F_v=\sum_{j\ge 0} \frac 1{j!(v-2j)!}x^j\),则总贡献为
然后考虑题目中的情况,令 \(C(a_i\to b_i\mid 1\le i\le n)\) 表示从 \(a\) 到 \(b\) 且整个过程中值两两不同的方案数,对于排列 \(\sigma\),若存在 \(\sigma_i\ne i\) 则 \(C(a_i\to b_{\sigma_i}\mid 1\le i\le n)=0\),从而答案可以表示为
由此可以考虑 \(\text{LGV}\) 引理,令 \(M_{i,j}=F_{b_j-a_i}\),则答案为 \(\sum_s c_s[x^s]\det M\)
令 \(m=\max d\),显然 \(s=O(nm)\),从而 \(\det M\) 需要保留 \(O(nm)\) 项,取 \(O(nm)\) 个点值后插值求出 \(\det M\) 的系数即可
时间复杂度 \(O(n^4m+n^2m^2)\)
QOJ #1840. K-onstruction
考虑加强限制,要求构造的数组内不存在 \(0\) 且总和不为 \(0\)
初始为 \(\{1\}\),此时为 \(0\) 的子集数量为 \(1\)
考虑增量构造,设目前 \(>0\) 的数之和为 \(p\),\(<0\) 的数之和为 \(n\)
对于一个数组,设其总和 \(\ge 0\),且 \(a\) 个子集和 \(=0\),\(b\) 个 \(=-1\),将其乘以 \(p\) 后加入答案序列,设原本为 \(0\) 的子集数为 \(x\),则修改后为 \(ax+b\)
考虑枚举长度 \(\le 10\),值域为 \(\{-3,-2,-1,1,2,3\}\) 范围内所有无序数列,\((a,b)\) 相同的保留最短的,大约有 \(10^3\) 个,\(dp\) 求出每个 \(k\) 对应长度的最小值及方案
QOJ #2599. Anti-stress
考虑两条相互垂直的直线(不一定平行于坐标轴),将平面分为四个象限(假定将其绕原点旋转到平行于坐标轴,同步旋转 \(2n\) 个点),若一三、二四象限点数相同且第一象限蓝点数量和第二象限黄点数量相同,则一三象限中点相互匹配,二四象限中点相互匹配,显然为一组合法解
对于一个旋转角度 \(\theta\),将 \(2n\) 个点同步旋转,两条直线分别取两个方向上的中位数,显然此时一三、二四象限点数相同,令 \(f(\theta)\) 表示第一象限中蓝点数量减去第三象限中黄点数量,显然 \(f(\theta)\) 取值连续(即 \(\theta\) 变化 \(\varepsilon\) 后,\(f(\theta)\) 至多变化 \(1\))
显然 \(f(0)\) 和 \(f(\pi)\) 符号不同,由此可以二分出一个零点
时间复杂度 \(O(\sum (-\log \varepsilon)n)\)

浙公网安备 33010602011771号