IOI2022乱做
无线电信号塔
膜拜juju直接切掉 Orz
显然的观察是:我们只需令选出的塔满足相邻塔都能通信即可。
一组询问时,考虑每个点左右比它至少高 \(d\) 的最近点,记为 \(l_i,r_i\)。
那么两个点 \(x,y\) 能通信等价于 \([l_x,r_x],[l_y,r_y]\) 无交。
通过细致的观察,可以发现如下的性质:\([l_i,r_i]\) 之间要么不交要么包含。
那么我们只需取出每个不包含其它区间的区间就行了。
而对两个有包含关系的区间,显然是 \(d\) 大的包含 \(d\) 小的。
这启发我们考虑每个点左右第一个比它小的点,显然只需判断这些区间的包含关系。
预处理出 \(t_i\) 表示某个点被选当且仅当 \(d \leq t_i\),即可解决询问为 \([1,n]\) 的情况。
对于一般的区间询问 \([x,y]\),都可能有左右两个靠边缘的位置包含了询问外的某区间而漏算。
找到这两个位置判断一下即可。
(不妨考虑左侧的位置,显然它只可能是序列的前缀最小值中,最后一个满足 \(l_i<x\) 的位置。)
最罕见的昆虫
考虑类二分答案的过程。
首先花 \(n\) 次算出种类。
记有 \(n\) 只昆虫,\(c\) 个种类的最小步数为 \(F(n,c)\)。
枚举一个答案 \(ans\),接下来 \(O(n)\) check 它:往机器不断加昆虫使得基数恰好不多于 \(ans\)。
最后,如果昆虫数为 \(c\times ans\),那么就递归到没加入的昆虫的一边即 \(F(n-c\times ans,c)\)。
否则递归到 \(F(c\times ans,c)\)。
取 \(ans=\dfrac{n}{c}\),毛估估一下不超过 \(2n\)。
随便卡卡常就能过。
千岛
不会啊,为啥大家都说是sb题啊
如果点 \(1\) 出度为 \(1\),那么最后显然只能从出去的那条边回来。那么存在答案等价于从接下来那个点以起点存在答案。
那么现在起点的出度至少为 \(2\)。
首先假设整张图强连通,容易发现无论如何都有解,构造略去。
对于图没有特殊性质的情况,首先可以发现不会走到一个走不到环的点。删去所有这种点后,我们也猜测只要起点度数不小于 \(2\),就一定存在一个合法的解。
事实上这个猜测是正确的,下面给出构造:
令起点 \(S\) 有 \(k\ge 2\) 条出边 \(S \to a_1,\dots,a_k\)。
如果存在不同的 \(a_x,a_y\) 能走到同一个点 \(d\),那么有这样的构造:
\(S\) 走到 \(a_x\) 走到 \(d\),再走个环回到 \(d\) 回到 \(a_x\) 再回到 \(S\)。
接下来走 \(a_y\) 跑到 \(d\) 把之前的环倒着跑一边再跑回 \(S\)。(实际有一些细节。)
否则对任意 \(a_x,a_y\) 一定能分别走到两个不同的环,也易于构造。
代码鸽了