20210819K 复盘

开题,发现 t1 很博弈论,大概就是,dp 一下必败必胜就行了,\({\cal O}(n^2)\)。测样例都过了,希望没锅

写完了,看 t2,哦发现 t2 应该见过,是原题,相邻方格连边,传送找最近的墙再连边,跑最短路就行了

写写写,写了 3.1K,测样例都过了,希望没锅

看 t3,哦发现 t3 也见过?(怕不是某场我忘了的比赛拿出来重考了?)但是依然不会做

看了半天,只有暴力的 \({\cal O}(m(n^2+q))\) 做法...用并查集维护连通块情况,先放一下

看 t4,没看明白啥是 "经过不同的坐标数的方差的期望"。又过了一会才明白:若离散随机变量 \(X\) 表示走法经过的本质不同的坐标的个数,那么求 \(D(X)\)

想到关于离散随机变量方差的计算

\[D(X) = E(X^2)-E^2(X) \]

然后就完全没思路了。。。这都是啥跟啥啊。。

然后回来看 t3。瞪了一会发现,枚举到一个 i 的时候,只需要将 i 向所有其倍数连边就行了,我们不需要将所有的 \(n^2\) 条边都枚举尝试一遍,比如对于 8 和 6 来说它们在 i=2 的时候连边,但是我们只要 6-2 连边,8-2 连边,就足够让 8-6 连通

哦。然后用并查集维护这个过程,我按秩合并,再建图树上倍增,可以得到 \({\cal O}(m\ln m+n\log\log n+q\log\log n)\) 的复杂度!(

写写写,测样例过了,希望没锅

把前面几道题都检查过了,尝试写 t4 dfs 20pts,写完了发现样例过不去,不知道是写锅了还是题意理解错了


终于没有挂分


s2oj632. A.0819没有硝烟的战争 (vode)

属于博弈 dp。设 \(f[i][j]\) 表示,第 \(i\) 个人报数为 \(j\) 的情况下,\(i\) 所在的种族是必胜还是必败

初始化 \(f[*][m] = 0\),我们外层枚举 \(j\)\(m-1\)\(1\) 倒序,内层枚举 \(i\)

若对于 \(i\) 来说,\(f[i+1][j+1]\sim f[i+1][j+k]\) 中存在一个必胜态,那么 \(i\)\(j\) 的决策就能导致 \(i+1\) 必胜,[若 \(i\)\(i+1\) 同族,则 \(i\) 所在种族必胜,否则必败]

如果不存在一个必胜态,那么 \(i\)\(j\) 的决策会导致 \(i+1\) 必败。[若 \(i\)\(i+1\) 同族则 \(i\) 必败,否则必胜]

如此 dp 即可。\({\cal O}(n^2)\)

s2oj633. B.0819秘密通道 (portal)

开枪传送跑地图问题。

观察发现我们只有可能在当前点朝不同方向开两枪,然后走到一个口进去从另一个口出来。不可能出现:我在这里朝一面墙开一枪,再走一会,再朝另一面墙开枪再走进去。

那么,这个决策是复杂的:分为找地开枪,以及从一个口就近走过去两个步骤,且是原子性的,即不可中途打断。所以 bfs 是不好 bfs 的。考虑使用比 bfs 更强大的方法:最短路建图

首先将相邻能走的格子之间网格图连边,然后对于每一个点找齐上下左右最靠近的一堵墙开枪作为传送点,连边,长度为 dis,向除了入口的每一个方向最近碰到的点连边,长度为 dis + 1,跑最短路即可

s2oj634. C.0819城市猎人 (pictionary)

正如考场上想的一样,我们只用枚举一个 i,然后尝试让 i 和所有 i 的倍数连边即可

因为需要建图,所以得保留合并结构信息,使用按秩合并并查集。最后建图,然后树上倍增

复杂度:\({\cal O}(m\ln m+n\log \log n+q\log \log n)\)

s2oj635. D.0819无限远点的牵牛星 (altair)

原题是 uoj211.[UER#6] 逃跑。

这里有一份题解,涉及大力容斥,正解还正在观察研究中

【题解】uoj#211. UER #6 逃跑(概率期望 计数) (leanote.com)

posted @ 2021-08-19 20:43  熹圜  阅读(13)  评论(0)    收藏  举报