暂时咕了,一定会更完的!
THUSC2022 T1
签到。
直接倒着 dp,令 \(f_{i,j}\) 表示在位置 \(i\),走了 \(j\) 分钟且还没下大雨,到终点淋的最少雨数,转移一步直接分讨会不会下大雨,随便拆式子算算就好了。(显然下大雨之后会走二类权值到终点的最短路)
THUSC2022 T2
好像是简单题,可惜我不会。
令 \(f(l,r)\) 为使用区间 \([l,r]\) 替换后的最大权值,那么可以证明 \(l\) 关于 \(r\) 的最优决策具有单调性。
然后就决策单调性分治,每次在值域线段树内二分计算权值即可,指针暴力移动是 \(O(n\log n)\) 的。
复杂度 \(O(n\log^2 n)\)。
THUSC2022 T3
以 \(X\) 为根搜一个 bfs 树,那么横叉边只会连接相邻层。
令深度小于等于 \(S\) 的为“好”点,我们给边定向时令好点之间深度深向深度浅连边,坏点向好点连边,坏点之间的连边让左部连向右部。
我们随机抽查 \(O(\frac{n}{S})\) 个点,称一个点是“可接受的”当且仅当它既有入度又有出度,可以发现从“可接受的”点出发,只需要沿着出边走 \(O(S)\) 步即可到达 \(X\) 点。
而可以发现,除非全树深度小于等于 \(S\) 且叶子数量巨大,“可接受的”点数量总是 \(O(S)\) 级别的,而抽查 \(O(\frac{n}{S})\) 个点可以期望抽到 \(O(1)\) 个可接受的点。
而上面那种 Corner Case 可以在抽查完点之后任选一个点走 \(O(S)\) 步,显然可以到达 \(X\)。
平衡一下即可做到 \(O(\sqrt n)\) 的询问次数。
THUSC2022 T4
还不太会单 \(\log\)。
双 \(\log\) 做法就是重链剖分,重链上的每个哈希值维护一个动态开点线段树,查询的时候链之间暴力 KMP 即可。
PKUSC2022 D1T1
首先考察单个变量的随机过程。
我们发现这个随机过程由很多个形如这样的过程拼接而成:
从 \(i\) 出发,跳了若干步,中途始终没有越过 \(i\),最后一步到了 \(i+k\)。
令 \(f_{i,k}\) 表示这个事件的期望步数,枚举其跳的第一步,可以发现变成了这样的过程:
从 \(i\) 出发,跳了若干步,中途始终没有越过 \(i+j\),最后一步到了 \(i+k\)。
令 \(g_{i,j,k}\) 表示这个事件的期望步数,容易列出 \(f,g\) 的递推。
将 \(g\) 全部用 \(f\) 表示,可以在 \(O(nm^3)\) 解出所有 \(f\)。
而两个变量可以直接 dp,令 \(h_{i,j}\) 为第一个为 \(i\),第二个为 \(i-j\) 的答案,然后随便转移一下就好了。
复杂度 \(O(nm^3)\)。
PKUSC2022 D1T2
PKUSC2022 D1T3
PKUSC2022 D2T1
为什么,大家,都切了。。。
两种做法。
枚举 \(f(x_i)=g(y_i)=w_i\) 的 \(w\) 集合,可以发现本质不同的贡献只有 \(O(p(n))\) 种。
此时 \(f,g\) 两个函数就是独立的了,只需计算 \(\forall_{i} f(x_i)=w_i\) 的概率即可,列出式子:(令枚举的拆分数是 \(t_1,t_2,\cdots,t_k\))
暴力卷积即可,复杂度 \(O(p(n)n^2)\)。
实际上这道题可以做到 \(O(n^6)\)。(标算做法)
构建一个左右均 \(n\) 个点的二分图(左右各代表 \(f,g\) 的输出),若 \(i\) 向 \(j\) 连边则表示有约束 \(f(i)=g(j)\),一个连通块里的数必须相同。
枚举这个二分图的边数 \(e\)(叠合重边)以及连通块数量 \(c\),我们可以答案的式子:
其中 \(f(m,e,c)\) 表示左右各 \(m\) 个点,\(e\) 条边,\(c\) 个连通块的二分图数量。
暂时咕了,之后再更。
PKUSC2022 D2T2
好像比较简单,竟然还是不会。
给每个颜色的边随机权值使得同颜色权值异或和为 \(0\),于是一条路径合法可以看作路径权值异或和为 \(0\)。
做一遍树上前缀和,合法路径就是前缀和 \(v\) 相等的点之间的路径。
那么我们需要解决的问题就是点集直径,以及点集不过某个点的直径。
首先求出点集某一条直径,如果查询点不在这个点集上答案就是直径;否则我们以 \(s,t\) 为根各 dfs 一遍,求出每个子树的点集直径就可以得到删掉直径上点的答案了。
由于有很多个颜色,用一个虚树做一做,计算答案的时候再离线排序再树上并查集就好了。
复杂度 \(O(n\log n)\)。