2017百度之星Astar资格赛 1001度度熊保护村庄

4 篇文章 0 订阅
3 篇文章 0 订阅

这道题目并不难,但是真的很难想到~一开始我的思路也是各种乱贪心……
题目链接:http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=774&pid=1001
Astar2017资格赛1001
这道题的题意就是给出两类点,选最少的第二类点使得其所构成的多边形能够完全包含第一类点。
这个问题很像凸包,但是这里所要求用来包围的和被包围的点集是不一样的,而且所求不是面积最小而是点数最少,不过这里所要求的算法也无需那么高效,只需 O(n3) 左右即可。
我们考虑建一个图,暴力枚举两个二类点 a b,如果所有一类点都在 ab 左侧,我们就从 a b连一条边,反之如果都在右侧,那么我们就从 b a连一条边,如果所有一类点不都在同一侧,那么我们就不连边。这个东西可以暴力算,再枚举每一个点然后算个叉积啥的就行了。
这时,这道题目已经被我们化简成了简单多的图论问题啦~这里就是要找一个最小环,马上就想到我们无比简单的 Floyd 最小圈,那么就能过了。
不过这题时限只有1s,所以我们在常数上还需要注意(但是这道题目真的很水啊233为什么没有什么人过……@tmk @Maple)。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值