Codeforces Round 987 (Div. 2)解题报告

Codeforces Round 987 (Div. 2)

太好了是阳间场,我们有救了

感觉脑子生锈了qwq,F题做不出来


A

分析知如果有 i<jai>aj 的情况出现则 ij 一定至少改一个。

所以答案即为 ncntcnt为众数个数。


B

发现一个数离自己原本的位置距离不会超过 1,有意义的交换顶多一次。

于是做一轮满足题目限制的冒泡,最后判断是否还原即可。


C

这玩意居然浪费我 5min,吐血

偶数简单,112233 即可

奇数的话一定有一个数字出现 3 次以上。不妨记其前三次出现在 i,j,k

ji,kj,ki 均为完全平方数。即有 a2+b2=c2

最小整数解为 (3,4,5),所以 ki25n27

n=27 构造一组解,>27 则后面偶数填满,<27 判无解即可。

就这个解居然硬控我 5min,想复杂了。

a1=a10=a26=1,a11=a27=2,其余为偶数段。

总结:别想太多。。。


D

一开始想歪了,后面好在调整过来了。

一开始想的是单调栈,后面复杂度一分析不对。。。

所以还是辨析相似的知识点,这点很重要。

考虑到建图其实是一个无向图(两个跳法肯定对称的),于是使用并查集即可。

发现若 i<jai>aji,j 不相邻,则 k(i,j)i,k 满足条件或 j,k 满足条件,所以可以用链表维护相邻关系,用一个队列维护当前可以与后面合并的连通块,每次拉出来合并即可。

如果一个连通块最大值大于后一个的最小值即可合并。

最后答案为每个点所处连通块中的最大值。


E

子树之间是相互独立的,问题是把一个节点的各个子树分配到一棵二叉树里。

肯定尽量把相同大小的子树并列最优。由此得到算法:

fuu 及其子树搞定的需要最小深度,则:

fu=0,当 u 为叶子

fu=fv+1,当 vu 的唯一子树

否则 fuu 的所有子树 fv 构成可重集合 SS 依次挑出最小的 x,y 合并得到 z=max(x,y)+1S 删去 x,y 加入 z,直至剩下一个值即为 fu


F

构造提问以获取信息,这种题目太久没做,有点生疏了。。

考虑随便删掉两个数字,问 n2 个,容易在 O(1) 次问出一个 <n2,一个 >n2+1 的数对(判定即返回值为(n2,n2+1))

记为 (x,y)

然后就不会了,真是怀疑考场上的精神状态。。。

只要把剩余的两两分一组询问 (x,y,i,j),则(i,j) 中存在 n2 返回值存在 n2,另一边 n2+1 同理。

最后 C42 次询问找出答案即可。

只需问 n2+O(1) 次。


posted @   Vizing  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示