【LOJ 3378】点格棋(DP)(推论)
点格棋
题目链接:LOJ 3378
题目大意
有一个 (n+1)*(m+1) 的格点组成的网格,然后两个人轮流操作,选两个相邻(距离为 1)且没有连边的点对连一个竖直或者水平的线段。
然后如果一个人连线之后一个新的位置的四个边界都有线段了,那这个人就获得一分,并要继续操作。
然后无法操作时结束,然后给你当前的局势,问你从现在开始算分,先手的分减去后手的分的最大值。
保证当前局势满足每个格子的四个边界都有 2 个或者 4 个线段。
思路
会发现每个格子看做点,那也就是说每个点要么没有边,要么有两条边。
那就是形成了一些环,以及单点。
那单点在之前就贡献了,所以完全不用管。
但是其实不是,它有边界,那边界就相当于一条边,所以会有环和链。
那不如先考虑只有链怎么做。
那会发现先手一定会给后手创造机会,那如果只有一个连通块,那后手就能把所有的都取完。
那如果不止一个连通块,后手选完这个连通块的所有点,就要变成了先手,再开一个连通块。
不过会发现这样无法解释第二个样例,因为其实你不一定要选完。
那怎么让自己停下来呢?就是要少贪点,比如对于链我们可以留下一个大小为 的,如果是环,那就至少要留下两个大小为 的(也就是要留 的大小)
那显然多留是不优的,你肯定是在你能拿且保住后手的基础上尽量多拿,否则如果不保后手为啥不全取完。
那考虑一些特别的情况,比如链长度为 ,环大小为 。
发现如果链长度是 ,先手是可以不让后手保住后手的(就选中间的那个),但是环就没办法。
那我们就有状压 DP 是每个连通块是否处理,处理这些后手的最小费用(我用的是这个,也可以先手的最大费用)
那考虑优化,注意到对于所有的链,先手肯定会优先选长度最小的,因为先手是亏的。
那环也是这样。
那至少我们发现链,环,它们自己的顺序是固定的。
那就可以 来 DP,复杂度就是 (连通块数量是 )
那 肯定能过。
代码
__EOF__

本文链接:https://www.cnblogs.com/Sakura-TJH/p/LOJ_3378.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2022-03-13 【luogu P4726】【模板】多项式指数函数(多项式 exp)(NTT)
2022-03-13 【luogu P4725】【模板】多项式对数函数(多项式 ln)(NTT)
2022-03-13 七十(环带状矩阵)(高斯消元)
2021-03-13 【luogu P6091】【模板】原根
2021-03-13 【ybt金牌导航8-6-5】最小原根