Examples

2023-6-16 #59 旋转吧旋转吧宇宙一样 永远都不会停止这幻想

——不鱼《清晰人类》

学考结束了!

上一篇博客因为做题断断续续的,题解没写全就先不发。

398 ABC304G Max of Medians

二分答案,判定与 P5592 美德的讲坛 类似,做一个 trie 上的二维 dp,复杂度 \(O(n\log^2 n)\)

399 ABC305H Shojin

一段内的顺序一定是最后做 \(a=1\) 的,其余按照 \(\frac{b}{a-1}\) 排序依次做。\(a=1\) 的贡献可以最后算,我们将其从序列中去除。

现在只能选择长度不超过 \(O(\log V)\) 的区间,预处理每个区间的权值。猜测代价关于 \(D\) 有凸性,wqs 二分即可,复杂度 \(O(n\log^2 V)\)

400 CF1662J Training Camp

很难的题目,不知道怎么想出来的。

将限制转化为:不存在一个未选择的位置满足,同列比其小与同行比其大的元素均未选,或者对称情况。

一个人类智慧的建图是将每行值相邻的元素连边,每列值相邻的元素连边,限制就变成“不存在一条值依次为 \(1,2,\cdots,n\) 的链”,可以证明其是充要条件。

最小割即可,由于要求只割 \(n\) 个点,我们可以将一条边的边权加上一个 \(>n\) 的数保证割的越少越好(至少要割 \(n\) 个点)。

401 CF1184D2 Parallel Universes (Hard)

比我想象中难一点,鸽一会儿。

402 CFgym102992D Degree of Spanning Tree

咋这种题这么多人会???????????????哦原来大家都会乱搞那没事了。

不合法的点至多一个,假设其为 \(1\),我们令 \(1\) 为根考虑调整一些边。

为了减少 \(1\) 的度数我们可以执行以下操作:加入边 \((x,y)\),找到 \(x\) 深度最浅的非 \(1\) 祖先 \(p\),断开 \((1,p)\),可以用并查集维护找祖先的过程。

我们不断执行这种操作直到 \(1\) 的度数恰好为 \(\lfloor\frac n2\rfloor\),此时若存在一个点不合法,其一定与 \(1\) 相邻(引理:树上任意两个点 \(x,y\) 满足 \(deg_x+deg_y\leqslant n\),等号仅能在两点相邻时取到)。

假设这个点是 \(t\)\(t\) 的不合法一定是因为加入了一些边 \((x,t)\) 并且断开了 \(x\) 的祖先。于是我们先将所有有不与 \(1\) 相连的边加入,最后依次考虑每条连接两个 \(1\) 邻居的边,并断开度数较大的邻居。

如果最后产生了不合法点 \(t\),我们考察 \(t\) 加入的最后一条边,另一个点度数大于等于 \(deg_t=\lfloor\frac n2\rfloor\),而此时 \(1\) 度数大于 \(\lfloor\frac n2\rfloor\) 因此一定没有这种情况。复杂度 \(O(n\log n)\)

403 CF1666H Heroes of Might

考虑对 \(\sum a,hp\) 根号分治。

显然有一个 exchange argument,如果 \(\sum a\) 较小,会对人数产生变化的边不多,我们提取出关键点做一遍类似 monster hunter 的 exchange argument 即可。

否则 \(hp\) 较小,注意到攻击存在 \(\frac{hp}{\gcd(d,hp)}\) 的周期,且如果开始取周期里的元素一定会一次性取完,我们类似快速幂地把所有周期合并即可。

exchange argument 的实现可以维护一个单调栈表示一条链的决策,且从头到尾越来越劣,注意到快速幂合并两个 \(O(l)\) 的单调栈得到的单调栈长度一定也是 \(O(l)\) 的。

复杂度 \(O(T\sqrt T\log T)\)

404 CF1584G Eligible Segments

一个很直接的想法是枚举一端,之后每个点会给线段的斜率一个区间限制(注意到夹角区间长度不超过 \(\pi\),因此求交不会导致区间增多),但是会发现对线段长度的限制与角度有关,不方便刻画。

注意到一个点到一条线段 \(AB\) 的距离是到射线 \(AB\) 距离与到射线 \(BA\) 距离的 \(\max\),因此我们不需要管线段长度,只需 \(i,j\) 均在对方区间内即可,复杂度 \(O(n^2)\)

计算一个点到圆切线的角度:

只需计算两点夹角 \(\alpha\),两点距离 \(d\),则夹角区间为 \([\alpha-\operatorname{asin}(\frac{r}{d}),\alpha+\operatorname{asin}(\frac{r}{d})]\)

image

405 CF1178H Stock Exchange

没怎么想,应该仔细想想能会的。

最早的时刻有可二分性,二分时刻判定。

一个结论是只会在 \(0\) 与最终时刻进行交易,于是判定可以贪心地在 \(0\) 时刻换到最终时刻权值最大的股票,然后检查是否能换到目标态,这个贪心是 \(O(n\log n)\) 的。

最小化交易次数可以直接费用流,前后缀优化建图就好了。

posted @ 2023-06-16 23:24  xiaoziyao  阅读(151)  评论(0编辑  收藏  举报