【杂题乱写】Codeforces Round#906
只更新 div2 的。
A
判断是不是只出现了两种数字,且出现次数之差不超过 1
B
写一个不太复杂的模拟
C
按照题意从外往里缩着判断就行了。按位
D
假设出现了连边 那么一定可以连边 或者 证明可以考虑反证。
在观察一下发现如果连边 那么所有 都可以连边 所以直接线性扫一遍就行了。
E
【Easy version】
删掉两个区间,本质上是找到区间里面权值为 的元素数量,如果有交集那么就找到交集里面权值为 的元素数量。
没交集就前缀求一个最大值(区间右端点 且区间里面 最多的区间的 的个数)后缀求一个最大值
如果直接枚举有交集的区间比较蠢,因为可能交集里面的元素权值都 。不如找到所有权值为 的元素有哪些,枚举覆盖它的两个区间。这个显然需要扫描线。
现在还漏了一种情况就是有交但是交集中权值为 的元素数量是 。那么直接在上面扫描线的过程中搞一下。
【Hard version】
可以考虑 DP。设 表示前 个元素,已经删掉了 个区间所能获得的最大的 的数量,转移考虑转移考虑枚举 的某个 并把满足 的区间 全部删掉。注意到这样的区间不超过 个那么记录下来区间数量的变化位置,然后取前缀 就行了。
F
由浅入深,如果每个栈里面有一个元素,那么整体形成一个基环森林。那么把每棵基环树上的环删掉之后,树根就是树上所有节点的答案。
所以我们要做的工作是把环都删掉。然后把森林的点的答案设置为根节点。
栈里元素不是 也没什么不一样,把所有环都吃掉,然后再找树根就行了。注意到求出来某个点的答案,不一定要求某个点的栈全部被弹空,只要栈顶的答案被求出来就行了。
感觉这题还是比较有趣的,大家都可以来玩玩*
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律