Codeforces Round 801 (Div. 2)
1|0基本情况
A就开始犯病,导致+2.
B、C 都过样例了,但是都错。
2|0B. Circle Game
赛时推出来奇数必输,也知道偶数不是必赢,但是思路不清楚。
这里我没意识到一个很关键的性质。
奇数堆拿的石堆会变,这也导致了必输,比如三个堆
1 2 3 1 2 3
显然JOE拿的石堆是变化的。
偶数堆拿的石堆不会变!
1 2 3 4 1 2 3 4
通过分析,可以发现最小堆的石头(如果存在多个,我们取编号最小的)是第一个被拿完的,这堆石头的主人也必定会输。
那么偶数下直接看看最小堆是谁即可。
3|0C. Zero Path
3|1我的错解
一眼DP,然后自以为是的写了一个逆天假DP。。。
仔细一想,之前的题目,维护最大值、最小值,是符合DP的要求的,最优子结构,无后效性,虽然我说不明白,但是这题我维护的东西仔细想想并不符合DP的要求,所以这样直接维护是短视的,感觉有点像贪心,反正不是DP。
3|2正确DP
首先,如果经过奇数个格子,或者说
直接判断某个格子图是否符合要求太麻烦,我们可以思考,如果有任意一条路径,我们是否能根据这条路径的值(也就是途径的格子的和),来做一些改变,最后让路径的值变为
如下图这样就是对路径做了一次改变(改变前后只有一个格子不同)。最后让路径的值产生了变化。
在一次改变中,路径的值会产生
显然是不行的,如果整个格点图全是
首先就得确保在这个格点图中不会只有值特别离谱的路径,如果只有值特别离谱的路径,那无论你怎么变,也搞不出值为
所以我们需要找出值最大的路径,以及值最小的路径。
设值最大的路径的值为
那么如果:
我们就一定可以通过这样的变化把任意一个值为偶数的路径变为值为
或者可以这样理解,如果符合上面那个条件,那我们就可以逐渐把值最小的路径向值最大的路径变换,在这个过程中,一定有一个路径的值等于
至于求这样的格子图的最大和最小路径,就属于是典中典了。
4|0代码
__EOF__

本文链接:https://www.cnblogs.com/kdlyh/p/17891381.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下