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\)

随便卡卡常就能过。

https://loj.ac/s/1568406

千岛

不会啊,为啥大家都说是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\) 一定能分别走到两个不同的环,也易于构造。

代码鸽了

posted @ 2022-08-30 15:24  一般通过小萌新  阅读(92)  评论(2编辑  收藏  举报