社区讨论
这个做法能过吗?
P14362[CSP-S 2025] 道路修复参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mhksv838
- 此快照首次捕获于
- 2025/11/05 00:45 4 个月前
- 此快照最后确认于
- 2025/11/08 07:46 4 个月前
RT。
思路:枚举每个点k,对于每个k选择离它最近的城市连边,设这个城市为x,做一次dfs,记录每个城市的入边边权,若这个乡村里这个城市的距离小于入边边权,那么就删去入边,对于这个乡村与城市连边,统计减少的边权总和,如这个总和小于改造费用加上第一条边的费用,则保留此次变化,否则就不保留。
如何hack?
若看不懂:这里有形式化过程。
对于样例1,原有最小生成树是1-4 2-4 3-4三条边。
对于乡村1重建花费1,离它最近城市1,这两项花费总和2 在1开始做dfs,2的入边边权:2-4=5,3的入边边权:3-4=4,4的入边边权:1-4=6
而乡村一到城市2距离8<5,不进行修改保持2-4,到城市3距离2<4,做一次修改删去3-4,链接乡村与3,到城市4的距离4<6,删去1-4,连接乡村与4。
剩下的边权x=(4-2)+(6-4)=4,4>2,保留此次城市化。
现在的树边为乡村-1,乡村-3,乡村-4,2-4
现在的费用为1+2+4+5+(改造费用)1=13。
对于乡村2也是同理,不过由于省下的边权小于那两项花费,故不进行修改,最终答案13。
如何hack?
如有疑问可在讨论区@我
思路:枚举每个点k,对于每个k选择离它最近的城市连边,设这个城市为x,做一次dfs,记录每个城市的入边边权,若这个乡村里这个城市的距离小于入边边权,那么就删去入边,对于这个乡村与城市连边,统计减少的边权总和,如这个总和小于改造费用加上第一条边的费用,则保留此次变化,否则就不保留。
如何hack?
若看不懂:这里有形式化过程。
对于样例1,原有最小生成树是1-4 2-4 3-4三条边。
对于乡村1重建花费1,离它最近城市1,这两项花费总和2 在1开始做dfs,2的入边边权:2-4=5,3的入边边权:3-4=4,4的入边边权:1-4=6
而乡村一到城市2距离8<5,不进行修改保持2-4,到城市3距离2<4,做一次修改删去3-4,链接乡村与3,到城市4的距离4<6,删去1-4,连接乡村与4。
剩下的边权x=(4-2)+(6-4)=4,4>2,保留此次城市化。
现在的树边为乡村-1,乡村-3,乡村-4,2-4
现在的费用为1+2+4+5+(改造费用)1=13。
对于乡村2也是同理,不过由于省下的边权小于那两项花费,故不进行修改,最终答案13。
如何hack?
如有疑问可在讨论区@我
回复
共 1 条回复,欢迎继续交流。
正在加载回复...