2019-2020 ACM-ICPC Brazil Subregional Programming Contest

前期罚时爆炸,后期出题无力

A. Artwork

题意

在一个左下角坐标为 ( 0 , 0 ) (0,0) (0,0) ,右上角坐标为 ( N , M ) (N,M) (N,M) 10 ≤ N ,   M ≤ 1 0 4 10\le N,\ M\le10^4 10N, M104的矩形房间里,有一个盗贼在坐标 ( 0 , 0 ) (0,0) (0,0) 处。房间内还有 K   ( 1 ≤ K ≤ 1000 ) K\ (1\le K\le 1000) K (1K1000) 个摄像头,给出每个摄像头的圆心和监控的半径,盗贼不能进入任何摄像头监控的范围,包括边缘。
求这个盗贼是否能够到达右上角。

题解

计算几何,要使得盗贼不能运动到右上角,则有一连串的监控范围链接了左上到右下,从而阻断了盗贼的路径。
把每个监控范围设为一个点,左边界和上边界视为一个点,右边界和下边界是为一个点,任何有重叠关系的两个点连边,即判定左上边界是否和右下边界连通即可。
用并查集和图上BFS均可。
时间复杂度: O ( K 2 ) O(K^2) O(K2)

B. Buffoon

题意

判断第一个数字是否是 n n n 个数字中的最大值或最大值之一。

题解

C语言练习题

D. Denouncing Mafia

题意

给出一个有 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le10^5) n(1n105) 个结点,根结点为 1 1 1 的树,每一次操作可以选择一个结点,然后将这个结点到根结点路径上的每一个点染黑。
求进行 K ( 1 ≤ K ≤ n ) K(1\le K\le n ) K(1Kn) 次操作后,最多能把多少点染黑。

题解

贪心的思想,每次选择当前能够染最多的操作。
方法一:
我自己写的SB方法,记录每个结点保存它到最远的叶子结点的距离,并记录到这个结点的路径。最初只有根结点加入优先队列,然后每次操作从优先队列中取出一个结点,把这个结点到最远叶子结点路径上的点全部染黑,同时将路径上挂着的其他结点入队,进行 K K K次即可。
方法二:
同样记录每个结点保存它到最远的叶子结点的距离并记录到这个结点的路径。直接对所有节点排个序,然后从大到小用同样的方法染色,无非是要跳过黑点。
时间复杂度: O ( n l o g ( n ) ) O(nlog(n)) O(n

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值