ARC083 vp记录
有操作的操作场,考场过了 ABC(3/4)
A. Sugar Water
题意:一个杯子,可以容纳 \(F\) 克糖水,一开始是空的。每次操作:
-
加入 \(100A\) 克水
-
加入 \(100B\) 克水
-
加入 \(C\) 克糖
-
加入 \(D\) 克糖
每 \(100\) 克水最多溶解 \(E\) 克糖,求任意次操作后完全溶解的糖水中的最大含糖量,以及此时水的质量和糖的质量。
\(1\le A<B\le 30,\space 1\le C<D\le 30,\space 1\le E\le 100,\space 100A\le F\le 3000\)
枚举操作 \(1,2\) 的次数 \(i,j\),此时有 \(i\cdot 100A+j\cdot 100B\) 克水,还能加 \(\min((i+j)E,F-i\cdot 100A-j\cdot 100B)\) 克糖。预处理一下糖,做个前缀 max 即可。
B. Restoring Road Network
题意:给出一张点数为 \(n\) 的无向连通图的两两之间的最短路 \(a_{i,j}\),求这张图边的长度之和的最小值。
\(1\le n\le 300,\space 1\le a_{i,j} \le 10^9\)
枚举 \(i,j\),判断之间是否有边。
考虑枚举中转点 \(k\),求出如果没有边时的最短路 \(x\)。
如果 \(a_{i,j}>x\) 则无解;如果 \(a_{i,j}=x\) 则不用加边;如果 \(a_{i,j}<x\) 则有一条长度为 \(a_{i,j}\) 的边。
时间复杂度 \(O(n^3)\)。
C. Bichrome Tree
题意:一棵 \(n\) 个点的有根树,你需要给每个点定一个颜色(黑/白)和权值。给出 \(X_i\) 表示点 \(i\) 的子树中与 \(i\) 颜色相同的点权和,求是否存在一种构造方案。
\(1\le n\le 1000,\space 1\le X_i\le 5000\)
设 \(f[u,i,j]\) 表示点 \(u\) 子树内与 \(u\) 颜色相同点权和为 \(i\),不相同的为 \(j\)。
容易知道 \(X_u=i\),我们只需要设 \(f[u,j]\) 即可。
转移时用背包,设 \(g[i,j]\) 表示同色点点权和为 \(i\),异色点点权和为 \(j\) 是否存在。
但是枚举状态 \(O(n^2)\),枚举转移 \(O(n)\),点数 \(O(n)\),一共 \(O(n^4)\),无法通过。
考虑每个点的判定条件是 \(g[i,j]\) 中 \(i\le X_u\),我们一定是让权值和越小越好。
设 \(f[u]\) 表示异色点权和最小值,用 \(g\) 来合并,\(g[i]\) 为同色点权和为 \(i\),异色点权和最小值。
这样是 \(O(n^2)\) 的。
D. Collecting Balls
题意:一个 \(n\times n\) 的网格,有 \(2n\) 个小球,第 \(i\) 个在第 \(x_i\) 行 \(y_i\) 列。每行每列都有一个机器人,每次启动一个机器人,同一时刻最多一个机器人启动。启动第 \(i\) 行的机器人,他会取走第 \(i\) 行列编号最小的小球;启动第 \(i\) 列的机器人,他会取走第 \(i\) 列行编号最小的小球。求有多少种启动顺序,使得可以取走所有小球。
\(1\le n\le 10^5\)
考虑把 \(x_i\) 和 \(y_i+n\) 连边,一共 \(2n\) 个点,连出来是二分图。
会发现无解的条件是存在一个连通块不是基环树。
此时图是基环树森林,现在要算的相当于:操作一个点会删掉和他连接的最小编号的点对应的边,有多少种操作点的顺序使得删去所有边。
考虑每个基环树。树部分中每个点一定会删掉与父亲的连边,而环有两种:所有点都删左边的边,或者都删右边的边。
到这里开始码,但是分讨大难写,直到最后没写出来。
考虑直接枚举环上点的删左还是删右。然后对于每个点找出他应该删掉的边,以及为了删掉这条边必须在他之前操作的点。
我们对先后关系连边,要求的是拓扑序个数。会发现建出来的图是一个森林,对于每棵树算一下方案数即可。
时间复杂度 \(O(n)\)。