Codeforces Gym 100002 (NEERC 2002) 简要题解

本文已被迁移至新博客,您可点此查看


提交链接(Codeforces::Gym)
参考代码

前排提醒:本场比赛在 Codeforces::Gym 里是用的文件 IO。

A. Amusing Numbers

容易发现在 K K K 确定的情况下 Q N , K Q_{N, K} QN,K 的值单调不减,于是二分答案即可。
稍微脑补一下发现答案的一定小于 T = 1 0 18 T= 10^{18} T=1018
每次求 Q N , K Q_{N, K} QN,K 的时候记一下当前串是否为 N N N M M M 的前缀,直接搜就行了。
时间复杂度: O ( log ⁡ 2 T ) O(\log^2T) O(log2T)

B. Bricks

显然我们只需要取砖块面积最小的那个面尝试塞进去。
一种做法是枚举旋转角度,由对称性可知枚举 [ 0 , π 2 ] \left[0, \frac{\pi} {2}\right] [0,2π] 即可。时间复杂度为 O ( π 2 S ) O\left(\frac{\pi}{2S}\right) O(2Sπ),其中 S S S 为枚举步长。
另一种做法是稍微观察一下单调性,找到旋转过程中长或宽的极值点,直接 O ( 1 ) O(1) O(1) 判断。
实际比赛中考虑到时间关系建议使用第一种方法。参考代码中给出的是第二种方法。

C. Cricket Field

枚举选出的正方形的左右界,显然只需要在有树的竖线中枚举,之后对中间的所有点求纵坐标差的最大值。数据范围很小随便暴力都能过。
时间复杂度: O ( n 3 ) O(n^3) O(n3)

D. Decoding Task

按题意模拟。

E. Evacuation Plan

费用流模板。

F. Folding

区间 DP,中间顺便处理一下循环串折叠的情况即可。
时间复杂度: O ( n 3 ) O(n^3) O(n3)

G. Ghost Busters

显然有用的射线只有指向所有球心的以及两两球的内公切线。枚举即可。
第二种情况的公式推导需要一定的空间想象力和一定的几何与三角恒等变换功底。
注意两两球的公切线不一定在两球心以及坐标原点确定的平面内。
简单说一下第二种情况的推导过程:
不妨设两个球的球心分别为 A , B A, B A,B,所求的公切线为 O P OP OP,其在平面 O A B OAB OAB 上的投影为 O Q OQ OQ
写两边三垂线定理可以解出 O P OP OP O Q OQ OQ 的夹角。
下面需要求出 O Q OQ OQ O A , O B OA, OB OA,OB 方向上投影的长度。这个可以由正弦定理和平行四边形定则推出来。具体的结论看代码。
时间复杂度: O ( n + n 2 ) = O ( n 2 ) O(n + n^2) = O(n^2) O(n+n2)=O(n2)

H. Heroes Of Might And Magic

总状态数不超过 50 × 10 × 10 × 10 × 100 = 5000000 50 \times 10 \times 10 \times 10 \times 100 = 5000000 50×10×10×10×100=5000000,每个状态的决策数不超过 12 12 12,直接爆搜即可。

I. Inlay Cutters

显然每个点的度数不超过 8 8 8,暴力建图然后暴力数三元环即可。
时间复杂度: O ( k 3 ) O(k^3) O(k3)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值