【做题记录】BJOI2016 水晶
-
水晶
- 算法:网络流
题目:
一个六边形网格的坐标用 来描述一个单元的位置,表示从原点开始按如图所示的 方向各走若干步之后到达的地方。
已知有 个水晶,并给出坐标与价值。
定义能量源为满足坐标 ,若其上面有水晶,则价值加上 。
炸掉一些水晶,使得:
- 没有 共振:如果三块水晶所在的单元两两相邻地排成一个三角形,那么会引起 共振。
- 没有 共振:如果三块水晶所在的单元依次相邻地排成一条长度为 的直线段,且正中间的单元恰好有能量源,那么会引起 共振。
求剩下水晶最大价值。
。
题解:
考虑对于一个能量源 ,将它的周围六个点分成两类:
黑色:
白色:
那么,有一个重要性质:
若选择了能量点,则黑色白色不能同时出现。
考虑证明。(图中的紫色是白、蓝色是黑,红色表示选择的水晶)
- 黑白相邻
如图,形成了 共振。
- 黑白不相邻
形成了 共振。
所以考虑把 意义下的三种点分别拆点。
将一个点拆成两个,中间一条边表示选或者不选,三类顺次连长度为INF的边,跑最小割即可。
然后源点连 的点, 连 , 连 , 连 汇点,答案为水晶的总能量减最大流。
这样就保证了黑白不相邻。
和王者之剑非常像。
本文作者:trsins
本文链接:https://www.cnblogs.com/trsins/p/15815385.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步