Loading

ARC083 vp记录

有操作的操作场,考场过了 ABC(3/4)

A. Sugar Water

题意:一个杯子,可以容纳 \(F\) 克糖水,一开始是空的。每次操作:

  1. 加入 \(100A\) 克水

  2. 加入 \(100B\) 克水

  3. 加入 \(C\) 克糖

  4. 加入 \(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)\)

posted @ 2024-03-10 12:57  Lgx_Q  阅读(7)  评论(0编辑  收藏  举报