Codeforces Global Round 16 F | CF1566F Points Movement
https://www.luogu.com.cn/problem/CF1566F
https://codeforces.com/contest/1566/problem/F
这类有关线段的问题我通常都是先观察线段的包含/交对线段是否保留的影响,以约束线段有左右端点的某种性质。
先考虑,A 线段包含 B 线段,那么 A 线段应该舍去,这是显然的,因为只要 B 线段被走过,那么 A 也一定被走过。
那么你考虑做以上操作以及舍弃初始状态下线段内就有点的线段,得到的一定是 线段,点,线段,点 这样交替的形式,且所有线段满足左右端点单不降。
然后你考虑一个点能怎么走。
-
往右。
-
往左。
-
先往左,再往右。
-
先往右,再往左。
注意到点走过的一定路径一定不会有交,有交的话只让一个走就更优。
然后你会发现我们要考虑的仅仅是对于相邻的 2 个点之间的线段由左还是由右走过,所以自然就想到 dp。
考虑 dp 的转移,一个决策点向右的行走可以让下个决策点决定,所以我们仅需要考虑当前决策点向左行走。
注意到,你需要考虑每个点往左走之后是否回到原来的位置,因此,设 表示第 个点,满足在第 个点之前的线段都已经被走过,是否回到原先位置。
显然你枚举中间线段的左右分界线转移即可,注意到,对于先往左,再往右的,等价于回到原来的位置。先往右,再往左的,等价于先往左,然后摊死在那,在下一个决策点计算 2 倍往右的答案。
__EOF__

本文作者:F x o r G
本文链接:https://www.cnblogs.com/xugangfan/p/16873177.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/xugangfan/p/16873177.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】