CF1948 | 似梦
CF1948 | 似梦
闲来无事,vp 一下。
A.
只有连续段才能提供恰好两个。
所以奇数一定无解,偶数只要形容 OOPP... 重复放就行。
B.
一开始读错题了。 /tx
从后往前考虑,如果当前序列末尾加入后满足递增就直接加入(贪心地想,这样上界是最大的),否则就必须要拆掉做子问题。
C.
首先发现我们主动的走不会往左走。
dp,\(f_{i,j}\) 表示 \((i,j)\) 是否可达。
按纵坐标作为阶段转移即可。
好像能直接 BFS,但是其实差不多。
D.
枚举重复串的半径,check 相当于在 01 序列上求极长连续段。
E. \(\color{#DB7D74}{\star}\)
被结论题创飞了,被数据范围骗光了。
由于和曼哈顿距离相关,尝试将 \((i,a_i)\) 扔到平面直角坐标系上。
考虑一些局部的性质:一个团有何特点。
首先是其中点对间最大曼哈顿距离不超过 \(k\)。
其次,其在 \(x\) 轴和 \(y\) 轴上的投影一定是连续的一段区间。
再而,其大小必然不超过 \(k\)。
容易感性理解,证明亦不难(详见这篇题解)。
自然尝试让每个团大小为 \(k\)(最后一个团可能达不到 \(k\))。
这容易做到。
我们考虑一个正方形,其对角顶点的曼哈顿距离为定值。
只需让其他点被这个正方形包含即可。
把正方形的一条对角线垂直水平方向,定值取 \(m\),让剩下的点在正方形的一组对边上即可。
具体地,对于编号在 \([l,l+k)\) 中的点,取 \(mid = l + \frac k2\),按 \(mid, mid-1, \dots, l, l+k-1, l+k-2, \dots, mid+1\) 的顺序降序放置 \([l,l+k)\) 即可。
F.
计数简单。
先考虑一个询问怎么做。
我们发现问题可以化归到一边有 \(x\) 个银币,另一边有 \(y\) 个,求 \(x\) 个银币的价值比另一边多 \(k\) 的概率。
先乘上总方案数,把概率转成方案数。
我们关心 \(x\) 个银币中有几个是 \(1\),这是一个组合数。
枚举差量把不等式转成等式,有式子:\(\sum\limits_{c=k}\sum\limits_{d=0}\binom yd \binom x{c+d}\)。
由下指标反演推论,后面那个求和式是 \(\binom{x+y}{y+c}\)。
对下指标求缀和是没法好好做的。
但是关注到 \(x+y\) 是一个定值,所以只需我们预处理出上指标为 \(x+y\) 时的下指标后缀和即可。
容易做到 \(O(n + q)\)。
G. \(\color{#DB7D74}{\star}\)
转化还是挺好的。
考虑树的最大匹配是什么,往二分图方面考虑,二分图最大匹配 \(=\) 最小点覆盖。
那我们枚举最小点覆盖集合再跑 MST 即可。
注意此时生成的 MST 只需保证枚举的点覆盖集合是合法点覆盖集合即可。相当于钦定若干条边不选。
用 Prim 实现,复杂度 \(O(2^n n^2)\)。
还有一个做法,是把二分图最大匹配转化为点数减去最大独立集。然后枚举独立集,是类似的。

浙公网安备 33010602011771号