1. 程式人生 > 其它 >2018-2019 ACM-ICPC, Asia East Continent Finals

2018-2019 ACM-ICPC, Asia East Continent Finals

有些題目還不會寫,留個坑吧。(我太菜了哭哭

#### A - Exotic … Ancient City

場未A,留坑。

#### B - Mysterious … Host

場未A,留坑。

#### 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$ ,分討即可。