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}}\) 为底的哈希值,然后可以直接递推了。

https://qoj.ac/problem/8231

\(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\) 分。

https://qoj.ac/problem/8190

答案集合的大小显然是 \(\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}\) 即可,容易证明这是对的。

posted @ 2025-09-22 21:27  Egg_eating_master  阅读(9)  评论(0)    收藏  举报