Codeforces Round #808 (Div. 1)(A~C)
Codeforces Round #808 (Div. 1)(A~C)
A:Doremy's IQ
题目大意
给你一个序列,然后你从左到右可以选择弄或者不弄。
然后你有一个智商值,如果你当前弄的数小于等于它就无影响,否则智商值减一,如果变成了 就无法操作。
要你最大化弄的次数,并构造方案。
思路
小溪了这题就卡了半天。
甚至不如先做 T2。
正着我们会有一个 DP,但是似乎不太能优化。
所以考虑反着来,会发现问题就变成了一开始你是 ,每次如果碰到大于的你可以选择 并通过它,然后你只能加到 。
会发现显然可以贪心,就能 就加一,然后模拟一遍过程就好了。
代码
B:Difference Array
题目大意
给你一个排好序数组,你要对它不断进行以下操作直至数组长度变为 ,并输出最后的数。
把它差分,把差分得到的数组排序。
思路
我只能说有点诈骗。
首先发现数组每一项的和只会最多是数组长度的两倍。
那很多地方都会相同, 那因为一开始就排好序所以差分就会有很多 。
然后你会你只需要保留一个 来进行操作,所以真正操作的量会很少。
所以直接模拟即可。
代码
C:DFS Trees
题目大意
给你一个图,然后问你从每个点出发得到的 dfs 树是否是最小生成树。
每条边边权不同且为 的值。
思路
麻用错性质想了半天。(虽然看起来想法能写但来不及了,主要是想到的性质太复杂啦)
你会发现因为是最小生成树所以你对于一条非树边,你如果从一段走过去,你还是优先走树边。
那怎样会出现问题呢?就是你走完树边,发现到不了非树边连的点,那你就只能走非树边了。
画个图理解一下,你就会发现这些不行的位置都是在非树边两个点之间的路径上的点(以及它的子树),就是中间的部分,你只要从一头进去都是没问题的。
那我们考虑对每条非树边都得到一些判断:
从某些点出发 dfs 可以某些不行,具体一点我们把非树边 在树上的路径断开,然后 的子树是可以的。
那如果一个点要完全可以,它要满足每条非树边的条件,那我们就维护每个点满足了多少了条件。
至于子树赋值就直接打标记然后最后跑个 dfs 下传下去即可。
代码
__EOF__

本文链接:https://www.cnblogs.com/Sakura-TJH/p/16485973.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!