23
https://www.luogu.com.cn/problem/P9197
这题我为什么不会啊??
套路地拆绝对值,从大到小往序列里面插数,\(dp_{i,j,k,0/1,0/1}\) 表示前 \(i\) 个数形成 \(j\) 个连续段,这 \(i\) 个数的贡献总和为 \(k\),是否填了开头末尾。但是有一个问题,\(k\) 这一维会达到 \(O(n^2)\) 级别,于是炸了。
注意到 \(m\) 只有 \(1000\),所以我们希望找到一种更高妙的刻画贡献的方式,使得在插数的过程中 \(k\) 这一维不减。设 \(s_i\) 表示插入前 \(i\) 个数之后,所有连续段的总段头数量。那么 \(ans=\sum s_i(a_i-a_{i+1})\)。这个显然是不减的。
https://www.luogu.com.cn/problem/P9319
这题我为什么不会啊??
我猜的有解条件是,每个点双都包含偶数条 \(1\) 号点的邻边。然后不会了。
这个条件可以写成,把 \(1\) 删掉后,每个连通块都包含偶数个 \(1\) 的邻点。只需将这些点两两匹配,保证匹配路径两两不交即可。把生成树搞出来然后贪心匹配是对的。
https://www.luogu.com.cn/problem/P11404
猎奇的题目。
记 \(f_B(i,j)\) 表示区间 \([i,i+2^j-1)\) 经过蝶变后,以 \(B\) 为底的哈希值,那么有 \(f_B(i,j)=f_{B^2}(i,j-1)+Bf_{B^2}(i+2^{j-1},j-1)\)。
所以可以直接记 \(f(i,j)\) 表示区间 \([i,i+2^j-1)\) 经过蝶变后,以 \(\large B^{2^{19-j}}\) 为底的哈希值,然后可以直接递推了。
以 \(3\) 为底倍增分块,如果一个块内有解就直接输出这个块的中点。
考虑怎么 check 一个块有解。可以 NTT,但是得保证颜色不同,令 \(u\) 和 \(v\) 的贡献为 \((c_u-c_v)^2\) 即可!
https://www.luogu.com.cn/problem/P14099
考虑维护若干三元组 \((l,r,s)\),表示已经确定了 \([l,r]\) 的区间和为 \(s\)。每次选择平均值最小的区间劈成两半。
直接实现这个做法会拿到 \([90,98]\) 的不等分数,用一些随机操作来迷惑交互库,可以得到 \(100\) 分。
答案集合的大小显然是 \(\lfloor\frac{n+1}{2}\rfloor\)。
证明:构造抽屉 \(S_k=\{(2k+1)\times2^i|i\ge 0\}\),显然一个抽屉里面只能选一个数。
考虑应该怎么选数才能使总和最小。注意到当 \(x,y\) 均为奇数且 \(x|y\) 时,有 \(y\ge 3x\),所以选择 \(x\times2^{\log_3\lfloor\frac{n}{x}\rfloor}\) 即可,容易证明这是对的。

浙公网安备 33010602011771号