Codeforces Round 898 (Div. 4)
由于题目补完才来写总结,导致前面的有的题目都需要重新再看一遍,只好当作复习了。
但考虑到趁热打铁,先看H.
H题:
- 从小白视角来看乍一看是博弈论,仔细思考以后发现是图论。本题给的是基环树,意识到这一点很重要,这个条件是让本题不是很复杂的关键。n个点n条边且没有重边保证这个联通图中只有一个环。由于瓦能够预测马去哪,当双方在环上时,瓦永远不会被抓到。若开始时瓦不在环上,则瓦的最优策略是找到去环上的最短路,而马的策略尽可能先到环去拦截瓦。
梳理一下逻辑顺序,在环上找到离b最近的一点u,a如果能提前到u,则b就会被拦截。只需比较a到u的最短路和b到u的最短路大小就可以。
以上为算法思路,下面考虑用什么去实现上面这个思路?
首先dfs找到环,再bfs得到瓦到环上哪个点最近,确定u点后,再bfs找到a到u的最短距离。
bfs找最短路过程朴素,注意力放到dfs过程我学习到的点:
1.记录par父节点数组是为了能遍历环的时候找回去,找到环中距离b点最近的点。
2.对于只有一个环,利用dep深度数组去找,如果当前点x可拓展的点深度和dep[x]大小差2还能连在一起,则起码构成一个最小的三角环,建议自己画图理解dfs深度和环的关系。
G题
个人认为官方题解这题写得不错,故搬运一下。
序言
在开始编辑之前,我想先说明一下,这类问题并不是第 4 单元的传统问题,它比通常的问题更具有临时性。我的目的是制作一个 "入门级 "的临时问题,希望大家喜欢。这篇社论有点长,主要是因为我想详细介绍如何处理这类临时问题,因为通常大多数 Div.4 问题都不像这样,而是侧重于注意和执行正确的算法。我不认为任何人在解题时真的会明确地去看这些细节,但我想为不知道如何入手的人提供一个非常明确的攻略。
但我认为临时技能对 Codeforces 尤为重要,所以才有了这个问题。也许你很快会看到更多。)
分析形势
让我们先想想如何重复使用运算。如果我们有一个字符串
从某种意义上说,把
我们可以这样替换这些字符:用
现在您可以看到每一个
解决问题
好了,我们有了这种直觉,那么现在该如何解决问题呢?我们需要吃掉最大数量的点(原始字符串中的
但
这就是我们的原始字符串发挥作用的地方。假设我们的原始字符串以
那么每一个
那么每个
所以我们只需要考虑字符串以
如果任何一个
那么请注意,我们可以将字符串拆分成两个字符串,这两个字符串要么以
还有一种情况是什么?起点和终点都是
我们能做得最好的是什么?请注意,每个
你也可以把它想象成一种贪心:每个
找组的时间复杂度为
g题首先需要自己多试样例发现重要规律,就是根据变换规则,b能处理它紧靠左边所有的a或者右边,也就收只能选一边,从最简单情况考虑,就是b的数量足够能够把所有a消灭,那答案就是字符串中a的个数。那怎么衡量b的数量有多足够呢?
当b开头或者b结尾或者既在头又在头又在尾,我们思考发现可以把所有a消灭掉。
在开始思考这题的时候,我们会觉得很杂很乱,脑子里觉得有很多情况。我们需要多看样例,尽力去划分问题,从一种情况看起,找到一种解法,然后再考虑其他情况,看看能不能划归。
对于aaaaabbbbbbbaaaaa的情况,我们会发现中间的b可以删到只剩两个,然后以2个b中间为分界线,拆成两个串,左边串以b结尾,右边串以b开头,问题划归到上面所述情况。
上面探讨的都是b数量足够的情况,如果不够也只是会少处理一段a,那我们要做的就是选出少处理哪一段,题目中要求最大值,我们只需要放弃连续a数量最少的一段即可。
E和F都是很明显能二分,但发现F可以不用二分用双指针优化到 ,具体可以看jls代码,我还没来及仔细琢磨。
知乎借鉴:双指针扫一遍,满足前面的树高度能被后面的树高度整除时,移动右指针,不满足时左指针直接跳到右指针位置,然后移动右指针,当摘的果子总数超过k时移动左指针,但左指针不能大于右指针
D题就是很朴素的贪心加指针跳跃。
C题官方题解给的也是打表,只不过我是用函数封装进行的数学找规律打表,虽然都是(不正经
正经解法好像是曼哈顿距离类似去判断和中心的距离,不过最终也还是找到数学规律.
B题数学公式推导后发现原命题等价于找到数组中的最小值所在位置即可。
__EOF__

本文链接:https://www.cnblogs.com/mathiter/p/17738257.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!