20220701 SMU&CUIT友谊赛(题目来源2021ccpc女生赛)
反思其实这套题签到题还是比较多大,而且能做的难题恰好也是我比较擅长的dfs。但是本次比赛中犯的最大的错误就是没有及时看榜,但是别人已经写了三道签到题了我还没有过题
1|0A
这道题的做法比较简单就是正反各跑一遍判断,然后根据判断结果判断答案
2|0C
正解是状压dp。我通过 dfs+剪枝
过掉了这题,并且跑的还算比较快
首先在一条路径上,如果某个公司的商店前后出现了多次,那么在第一次出现的时候领取优惠券是最优的选择。证明可以参考反证法。
在路径 1 -> 2 -> 3 上,1 和 3 属于同一家公司。如果不在 1 选择,就要在 3 选择,对于 3 点来说结果没有影响,但是对于 1 来说,因为不选导致不是最优解
其次第二个性质就是如果有两条路径分别是1->2->3->4
和1->4
,对于1,2,3
来说只有一条路径,但是对于4
来说有两条路径,然后可以发现选择1->2->3->4
不会比1->4
结果更差,所以1->4
这条路径删掉对答案是没哟影响的,依次类推可以把图中这样变都删掉,这样整个图一下子就变成了稀疏图。这个结论是剪枝的关键。
然后根据上述的性质,先把图中的边都删掉,然后dfs 遍历图,加上一点点最优性剪枝就可以把这题过掉了
3|0D
这题很有意思的,假设我们已经链接了n-2
条边 就差最后一条边了,现在的情况是1...k
连在一起k+1…n
连在一起。所以最后一条边就是从 1...k
中选择一个点l
,然后从k+1...n
中选择一个点r
,然后边权就是l..。r
中的最大值。然后我们发现l
从k
向1
移动的过程中l...r
的最大值只会越来越大,同理r
从k+1
向n
移动的过程也是这的,所以令l=k,r=k+1
才是最优解,边权就是max( a[l] , a[r])
。
然后我们不断的递归链接确定边权就会发现答案就是
4|0G
这道题是小思路,当半径无穷大的时候,每一个圆都可以覆盖整个小镇,所以答案就是
5|0I
按照题目模拟好了
6|0K
这题其实就是数一下-
的数量就好
__EOF__

本文链接:https://www.cnblogs.com/PHarr/p/16446822.html
关于博主:前OIer,SMUer
版权声明:CC BY-NC 4.0
声援博主:如果这篇文章对您有帮助,不妨给我点个赞
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现