Icebound

icebound-area

HBCPC2019题解

Solution

A. Battle of Balls

球的半径为 ,为了不让球碰到障碍点,就要保证,球心到障碍点距离大于

问题可转化为,每个障碍点有一个半径为的圆,需要知道从地图底边到地图顶端是否联通。

对于任意两个障碍点或一个障碍点和一条左右边界,如果它们之间的距离小于球的直径,则球通不过它们之间的间隔。

把所有距离小于 的障碍点连一条无向边;右边界和左边界两条直线抽象成两个点 ,把与其距离小于 的障碍点连一条无向边,得到一张无向图。

如果地图不连通,则一定存在一条从地图左边界 到右边界 的路径。

通过 就能知道 与 t之间是否存在一条路径,即可知道地图底边和顶端是否联通

时间复杂度 O(n^2)

 

B. Icebound and Sequence

简单想法直接模拟,复杂度 太大会 TLE

solution 1

考虑等比数列的性质,如果我们想要计算,我们可以先计算,然后整体乘上,即

利用这个性质,我们使用递归分治法解题。假设递归的这一层我们需要计算,我们先递归计算,将得到的结果乘上,则得到。因为最后一项为向下取整再乘二,如果为奇数的时候还需要再加一个。全程注意取模!

对于每一层我们都像上面那样递归,每一层都需要使用快速幂计算,共有层,总复杂度为,如果我们每层都记录一个参数,,则无需快速幂,总复杂度为

solution 2

表示等比数列前项的和,则,这是一个线性常系数递推式,可以使用矩阵快速幂处理递推。

solution 3

根据等比数列求和公式:当时,

由于 可能为合数,在模 意义下可能不存在逆元

所以要改变一下模数,先将模数改为 ,计算模 意义下的答案

,由于 能被 整除, 故 能被 整除,就可以不用求逆元

 

C. 分治

区间

表示攻打完第 个国家到第 个国家共 个国家需要的最小花费 第一层循环枚举区间长度,第二层循环枚举区间左断点,第三层循环枚举最先攻打区间 内的城市k。则状态转移为 复杂度是

 

D. 榜单

模拟 + I/O

给出一场比赛的所有提交记录,输出比赛最后的榜单

正确理解题意,字符串格式化输出

需要注意CE不计入榜单和罚时;一道题目AC后的提交不在统计

 

E. Paper Plane Fly Away

给一张二分图,求每条边与其他边有多少交点

对于一条边可用区间 表示。对于求交点数可转化为,所有区间按照左端点排序后,右端点的逆序数,加上按照右端点排序后,左端点的逆序数

使用两次经典的分治或者树状数组即可求解

 

F. Take Apples

使用搜索打表找规律,或结合博弈论相关知识可以确定:

时,Bob存在必胜策略。

否则Alice存在必胜策略。具体证明详见另一个文件。

 

G. 点我

签到题,直接模拟或找规律。

注意 时的情况

 

H. 天神的密码

本题数据范围最大可以出到。接下来按数据范围分别讨论做法:

时:

直接模拟即可。注意不要使用pow函数计算,pow返回的是double类型,会掉精度。

 

时:

因为只有4500位,使用高精度乘法模拟即可。

 

时:

考虑这个过程的性质,设某个数的第个数位的数字为,可以知道:

也就是说,对于某个数字来说,他的所有的数位上的和对9取模等于数字对9取模。

设第次操作后的值为,我们可以知道

由此,可以得知:题目中对于数字进行变换的过程等价于令对9取模,使用快速幂计算即可。

 

I. Twinkle

对于 时刻的询问,答案为

时刻时,初始值 时,值需要减去

问题转化为

划分为三个问题

  1. 二维平面,求一个矩形中多少个点(
  2. 二维平面,求一个矩形中所有点的权值之和(
  3. 二维平面,求一个矩形中有多少个点的权值

前两个问题等价,都是二维偏序问题,排序后使用树状数组或 分治,

第三个问题是一个三位偏序问题,一维排序,二维分治,三维树状数组

总复杂度

 

J. 舔狗

给出有向基环树森林,最多选取多少个没有公共顶点的边?

solution 1

找到环后,拆环后进行两边树形

表示以x为根的子树,不选择它的边的答案数

表示以x为根的子树,选择它的一条边的答案数

solution 2

贪心

从所有入度为 的点,贪心选择它指向的点,并把它指向点指向的点的度数减一,当点的入读为 时,加入队列;如果指向的点被选过答案加。

对于剩下的节点只可能存在环上,统计环上点的个数,两两配对。个数为奇数答案加一。

 

K. 河北美食

模拟+字符串

处理菜品名称,直接模拟即可。注意按要求输出

 

L. Smart Robot

假设答案的长度为,即机器人需要走步。则机器人在矩阵中最多产生个数字。

则答案一定小于等于,即,化简可得:

其中对数是以 为底的。

因为最大为 ,所以答案的长度一定很小,最高不超过 ,则机器人最多走步。

所以直接搜索,限制每个点最多搜索步,使用哈希表记录,最后筛选出答案即可。

但是事实上答案并不会达到上界,而且题目是随机生成的,所以只需要走步即可。

 

附件:题目+题解+证明+标程包:

链接: https://pan.baidu.com/s/1rMO8WoEGxLYc7SbCpE9oKQ 提取码: b5yc

  1. yangon说道:

    透,博弈论差点被我蒙出来……