【题解】Solution Set - NOIP2024集训Day87 二分 & 杂题
【题解】Solution Set - NOIP2024集训Day87 二分 & 杂题
https://www.becoder.com.cn/contest/5821/problem/1
「BJWC2008」秦腾与教学评估
考虑分块。设阈值 \(B\)。
- \(D\ge B\),可以在 \(O(\frac nB)\) 给出现的位置打上标记;
- \(D< B\),当前 \(i\) 有人当且仅当:\(i\in[S,E]\wedge i\bmod D=S\),这样的数对 \((S,D)\) 至多有 \(B^2\) 对,暴力统计复杂度为 \(O(B^2)\)。
当 \(B\) 取 \(n^{\frac 13}\) 时,复杂度为 \(O(n^{\frac 53})\)。
但是稍微想一下,这不纯智障题。
题目保证至多只存在一个位置是奇数,也就是说前缀为奇数满足单调性,直接二分找到最后一个满足前缀为奇数的点就是答案了。
「NOI2012」骑行川藏
https://www.luogu.com.cn/article/p1ha7nyp
p.s. \(t-E\) 函数应当是一个单减的下凸函数。
(还不太会求导
「CF626E」Simple Skewness
先考虑选偶数个。
对 \(a\) 排序,枚举中位数,如果选的个数确定那么两边都一定选最大的若干个。
(FAKE)因为中位数对平均数的贡献是一定的,我们只需要使两边的平均数最大就行了。注意到每次两边多选一对数,两侧的平均数必定减小,所以直接取最大的一对就行了。
显然有问题啊,中位数对平均数的贡献的确是一定的,但是也有贡献啊,她始终会把平均值拉低,使得我们可能再多选一对数的时候还可以把平均数(两侧加上中位数的)进一步拉大。所以不一定只有最大的那一对。
但是贡献还是单减的所以二分一下就行了。
奇数怎么做?枚举中间的两个?完全没法优化。
https://www.luogu.com.cn/article/5dkp45md
我们断言:对于一组大小为偶数的解,一定存在大小为奇数的解比其更优!(没想到来这一手😮
否则我们去掉较大的中间元素,假设平均值大于中位数,可以证明此时中位数减少的幅度大于减少平均值的幅度。
「COTS 2022」游戏 M
答案显然有单调性,考虑二分。
将前 \(mid\) 条边建出来,然后看 \((u,v)\) 是否在同一个环上,每组询问 \(O((n+m)\log m)\)。整体二分即可。
15min(主要是一开始在 dsu 上面绕了一会。
(FAKE)不对!判环不是那么的 naive,考虑每次连边转化为新建一个虚点然后连向两个端点(其实就是重构树)。是否在同一个环也就是看是否存在一条边满足加入前两个端点已然联通且两个端点分属 \(u,v\) 的子树中,转化为二维数点。两只 \(\log\),实现非常恶趣味(还要维护 dfn。
10min
实际上不是非要满足上述条件的非树边可以使 \((u,v)\) 在同一个环中。其实只要若干条边能把 \((u,v)\) 路径覆盖完就行了。
于是我们直接按时间建出最小生成树,然后对加入时间 \(t\) 的非树边,从大到小链覆盖 \(t-1\)。因为答案可以看作第一次在一个环中的时间 \(-1\),每次查询链上最大值 \(+1\) 即可。
(放二分题组里面害我不浅……
一个还算好想也很好打的单 \(\log\) 离线做法:https://www.luogu.com.cn/article/lsopbjaq

浙公网安备 33010602011771号