20182019 ACMICPC, Asia East Continent Finals

有些题目还不会写,留个坑吧。(我太菜了哭哭

#### A - Exotic … Ancient City

场未A,留坑。

#### B - Mysterious … Host

场未A。

原来就是不同析合树的个数,之前都没听说过, $\text{dp}$ 一下即可。

#### C - Heretical … Möbius

场A(-3)。

事实上写的暴力。

通过打表发现可以先判掉 $1$ 很多或者很少的情况。

考虑 $\mu_i=0$ 是因为 $i$ 有平方因子,由于给定串的总长很小所以先考虑 $4,9,25,49$ 的倍数,我们可以枚举每 $4$ 位都为 $0$ ,每 $9$ 位都为 $0$ 等等的一些起始位置,那这个起始位置模这些数就确定了,也就是我们可以知道这个起始位置模 $44100$ 的值 $x$ ,然后再去判断 $x+44100k$ 可不可以就行了。

判断的话先判断 $121$ 和 $169$ 的位置,然后再去判断这 $200$ 个数合不合法。

复杂度玄学,能过。

#### D - Deja vu of … Go Players

场1A。判断 $n,m$ 大小即可。

#### E - Immortal … Universe

场未A,场后听题解过。有点点难讲。

如果只有一个串,那就是要求前缀最小值 $\ge 0$ 。

现在有两个串,如果两个前缀最小值都 $\ge 0$ ,那就合法。假设第一个串的前缀最小值为 $-k$ ,那么我们考虑第二个串前 $k$ 个数一定要填 $\text{V}$ ,且 $[k+1,n]$ 这些位置的和要 $\ge 0$ ,这些位置的前缀最小值要分讨一下,如果第一个串的前缀最小值为总和,则要 $\ge 0$ ,否则只要 $\ge -1$ 即可。具体可以画出坐标系,从 $(0,0)$ 出发,向右为选一串,向上为选二串,然后有黑点和白点,黑点表示不能到达的点。而如果一个白点上右都不能走的话那就是不合法的。所以我们要让每个白点都能走。

这样我们考虑倒着 $\text{dp}$ 即可: $f_{i,j,0/1}$ 表示 $[i,n]$ 这些位置的前缀最小值为 $j$ ,和是否为前缀最小值的方案数。

效率: $O(n^2)$ 。

#### F - Interstellar … Fantasy

场A(-2)。能沿着线段走就直接走,不能的话就沿着切线走,再走圆弧,最后再沿着切线走即可。

#### G - Omnipotent … Garland

场未A。没看。留坑。

#### H - Saintly … Coins

场未A。没看,听说是很难的模拟。

#### I - Misunderstood … Missing

场1A。

每次加都是对后面的操作造成影响,所以考虑倒着 $\text{dp}$ 。

$f_{i,j,k}$ 表示 $[i,n]$ 轮,发动了 $j$ 次攻击,攻击的下标和为 $k$ 的最大攻击总和。

然后枚举第 $i$ 轮做了哪个操作即可。

效率: $O(n^4)$ 。

#### J - Philosophical … Balance

场1A。

根据纳什均衡的思想,我们希望分配 $p_k$ 后,对于每个 $j$ ,我们让 $\sum p_k \text{lcp}(s_k,s_j)$ 尽量相等。

看到 $\text{lcp}(s_k,s_j)$ 就会想到反串后建后缀自动机得到 $\text{parent}$ 树,于是我们考虑遍历这棵树,对于每个子树,我们要对 $\text{np}$ 类节点分配 $p$ 使得他们的总和为 $1$ 并且在这个子树内的那个值相等,对于 $i$ 子树,我们记这个值为 $f_i$ 。

考虑到如果根节点 $i$ 就是 $\text{np}$ 类节点,那么无论 $p$ 怎么分配,这个点在这个子树内的值就是 $len_i$ ,那我们就可以让这个点的 $p$ 为 $1$ ,其它的 $p$ 为 $0$ ,这样每个点的值都为根节点的 $len_i$ ,故 $f_i=len_i$ 。

然后如果根节点 $u$ 不是 $\text{np}$ 类节点,那我们可以对它每个子树分配 $p$ ,且 $p$ 的和为 $1$ ,那么每个子树 $i$ 的值会变成 $p_i f_i+(1-p_i)len_u$ ,变形一下就是 $p_i(f_i-len_u)+len_u$ ,可以把 $p$ 看成 $x$ ,这个值看成 $y$ ,那每个子树的截距都相同,斜率都为正,因此我们可以二分最终 $u$ 子树的点的值都会变成什么,然后比较一下 $p$ 的和和 $1$ 的大小即可。

效率: $O(n\log n)$ 。

#### K - Desperate … Fire Survive

场未A,场后听题解A。

设 $f_{i,j}=min{r}+1$ , $r$ 表示 $[i,r]$ 可以表示出 $j$ 的右端点。那么 $f_{i,j}=min(f_{f_{i,j-1},j-1},next_{i,j}+1)$ ,其中 $next_{i,j}$ 表示 $\ge i$ 的第一个 $=j$ 的位置。

于是离线,考虑到对于每个 $j$ , $\text{dp}$ 值相同的都是连续的一段,且 $\text{dp}$ 值不降,所以我们可以考虑把 $\text{dp}$ 值相同的放在一起转移。

发现段数总和是 $n\log m$ 级别的。于是做完了。

#### L - Eventual … Journey

场A(-1)。每个点到其他点的答案只有可能是 $1,2,3$ ,分讨即可。

原文地址:https://www.cnblogs.com/xjqxjq/p/15572263.html