$\newcommand{le}{\leqslant}\newcommand{ge}{\geqslant}$

AtCoder tokiomarine2020 题解

比赛链接

AK了一把ARC.

A. Nickname

题意:求小写字母串 $S$ 的任意三个字符的子串。$3 \le |S| \le 20$.

题解:输出 $S[:3]$.

代码链接

B. Tag

题意:A, B在数轴上跑跑抓,A的初始位置是 $a$ 速度是 $v$, B的初始位置是 $b$ 速度是 $w$, 求 $T$ 单位时间内A能不能抓到B. $a \ne b$, $|a|, |b|, v, w, T \le 10^9$, $v, w, T \ge 1$.

题解:能抓到当且仅当 $|a-b| \le (v-w)T$.

代码链接

C. Lamps

题意:$1$ 到 $N$ 的位置上各有一盏灯,灯 $i$ 的亮度为 $d$ 能够照亮 $[i-d, i+d]$ 范围内的所有灯。给出初始灯的亮度 $A_i$. 定义一次操作为:将每个灯的亮度改为能够被照到它的灯的个数。求 $K$ 次操作后灯的亮度。$1 \le N, K \le 2\times10^5$, $0 \le A_i \le N$.

题解:一次操作显然可以用差分搞定。如果不考虑出界的灯光,一盏亮度为 $d$ 的灯在一次操作后,对总亮度贡献 $2d+1$, 所以每次总亮度大约是翻倍。于是在暴力的基础上加一个“如果亮度序列不动了就停”的剪枝就能过了。时间复杂度不会证,反正A了。

代码链接

D. Knapsack Queries on a tree

题意:给定 $N$ 个点的完全二叉树,每个点都是一个价值为 $V_i$, 重量为 $W_i$ 的背包物品。$Q$ 组询问,每组询问给定 $v, L$, 求背包承重为 $L$, 只考虑 $v$ 到根的路径上的物品时,背包的最大价值。$1 \le N<2^{18}, 1 \le V_i, W_i, L, Q \le 10^5$.

题解:把前 $\sqrt N$ 个点关于背包容积为 $1$ 至 $10^5$ 的背包答案预处理出来,每次询问搜索后面的点选不选。时间复杂度 $O((Q+\max L)\sqrt N)$, 空间复杂度 $O(\max L\sqrt N)$.

代码链接

E. O(rand)

题意:给定 $N$ 个不同正整数 $A_1, A_2, \ldots, A_n$, 求有多少种选出其中 $1$~$K$ 个的方案,使选出的数按位与为 $S$, 按位或为 $T$. $1 \le K \le N \le 50$, $0 \le A_i, S, T < 2^{18}$.

题解:被标题误导去乱搞了。设 $S$ 的二进制表示是 $S_{17}S_{16}\cdots S_0$, $T$ 的二进制表示是 $T_{17}T_{16}\cdots T_0$. 对于 $S_i=1, T_i=0$, 整个问题宣告无解。对于 $S_i=T_i=1$, 去除那些对应二进制位为 $0$ 的数;对于 $S_i=T_i=0$, 去除那些对应二进制位为 $1$ 的数。对于 $S_i=0, T_i=1$, 就是要求所有对应二进制位为 $0$ 的数必须选至少一个,所有对应二进制位为 $1$ 的数也必须选至少一个。我们现在得到了不超过 $18$ 对互补集。把这些集合打乱顺序,然后对于每个集合搜索其最早选中的是哪个。搜完所有限制以后,剩余的方案数是一个组合数前缀和,预处理出来。时间复杂度不知道多少,反正A了。

代码链接

赛后写了个正经做法。大概是,上面做法的前三类讨论不变,对于第四类 $S_i=0, T_i=1$ 的位,考虑容斥,使得选中位要么只选了这位是 $0$ 的,要么只选了这位是 $1$ 的。设将选中位标 $1$,  其余位标 $0$, 构成掩码 $x$, 那么就变成从 $\newcommand{bitand}{\mathop{\mathrm{bitand}}}$ $A_1 \bitand x, A_2 \bitand x, \ldots, A_n \bitand x$ 中选取 $1$ 至 $K$ 个相等的数的方案数,乘上容斥系数求和。该做法时间复杂度 $O(N\max A)$, 空间复杂度 $O(N+\max A)$, 效率比乱搞高出不少。

代码链接

F. Triangles

题意:给定矩形区域,对角坐标 $(0, 0)$, $(W, H)$. 求有多少个三角形,使得其三个顶点在矩形的三条不同边上(不含端点),且其内部的格点数不超过 $K$. $1 \le W, H \le 10^5$, $0 \le K \le 10^5$.

题解:不妨假设三角形三个顶点为 $(0, a), (W, b), (0, c)$, 其余的同理可求。应用匹克定理可得等价条件:$aW-ac+bc \le 2K-2+(a-b, W)+(a, c)+(b, W-c)$.

枚举 $b-a=d$, 可不妨设 $d \ge 0$, $d<0$ 的情况对称可得。

$aW+cd \le 2K-2+(a-b, W)+(a, c)+(b, W-c)$. 由于 $aW \ge W \ge (a, c)+(b, W-c)$, 可枚举 $c \le {2K-2+(d, W) \over d}$, 于是可得:$aW \le X+(a, c)+(b, W-c)$. 对于 $aW \le X$ 的部分,只要在 $(0, H)$ 内一定可行;对于 $X < aW \le X+(a, c)+(b, W-c)$ 的部分,只需要检验 $a=\left\lfloor X \over W \right\rfloor+1$. 时间复杂度 $O((K+W+H) \log (K+W+H))$.

代码链接

posted @ 2020-06-15 11:08  nealchen  阅读(677)  评论(0编辑  收藏  举报