【题解】Codeforces Round 901 (Div.2) 4 of 7

A. Jellyfish and Undertale

Problem

显然每当倒计时仅剩 \(1\) 时依次使用工具会最优。

则第 \(i\) 个工具对时间的贡献就是 \(min(a-1,x_i)\)

B. Jellyfish and Game

Problem

题意:\(A\)\(n\) 个物品,\(B\)\(m\) 个,每个物品有价值。游戏进行 \(k\) 轮,奇数轮 \(A\) 可以选择与 \(B\) 的一个物品交换(或不交换),偶数轮 \(B\) 可以选择与 \(A\) 的一个物品交换(或不交换),问最终 \(A\) 拥有物品的总价值。\(1\le n,m\le 50\)\(1\le k \le 10^9\)

一开始,\(A\) 显然会拿自己的最小价值的和 \(B\) 的最大价值进行交换,而 \(B\) 的回合会拿 \(min(自己原本的最小价值,A 给的物品价值)\)\(max(A 原本最大价值,A 从 B 这拿走的物品价值)\) 进行交换。一个直觉是当游戏进行两轮以上后,双方的决策(即拿的物品的价值)都达到最优,因此游戏最终结果仅和 \(k\) 的奇偶性相关。我们只需要暴力模拟 \(k=1,2\) 时的结果。

C. Jellyfish and Green Apple

Problem

好题

题意:\(n\) 个苹果分给 \(m\) 个人,每个苹果 \(1kg\),每切一刀会均分成重量相同的两瓣,问最少切几刀能使每个人分到的苹果重量都相等,若无法均分输出 \(-1\)

\(1\le n,m\le 10^9\)

\(n\ge m\) 时,可以把 \(n\) 个中的若干个 \(m\) 分出去,剩下 \(n\%m\) 个。而剩下不足 \(m\) 个的为了能均分必然选择每个切一刀进行加倍,因此可以用递归进行模拟。

但这样无解条件并不明显,借用官方题解进行形式化的思考。由于苹果 \(1kg\),以下用数量指代重量,完全等价。

若能均分,那么必有 \(n\times 2^k\equiv0\pmod{m}\),因为只考虑什么时候无解时"先分再加倍"和"先加倍再分"是等价的。接着推出 \(n\times 2^k\equiv0\pmod{m} \rightarrow 2^k\equiv 0 \pmod{\frac{m}{gcd(n,m)}}\) .

也就是说,当 \(\frac{m}{gcd(n,m)}\) 不是 \(2\) 的整数幂时无解,可以用 \(\text{std::}\)\(\underline{}\underline{}\text{builtin}\)\(\underline{}\text{popcount()}\) 快速验证。

接着,若有解,那么每个人分到的苹果数量应该是实数 \(\frac{n}{m}\),而具体的,每次一个人得到的苹果数量应该是 \(2\) 的整数幂,即存在集合 \(S\) 使 \(\frac{n}{m}=\sum_{i\in S} \frac{1}{2^i}\)。而 \(|S|\) 即每个人得到的苹果数量,答案即为 \(m\times |S|-n\)

减去 \(n\) 是因为苹果总数量 \(-\) 原有数量 \(=\) 切的刀数。

D. Jellyfish and Mex

Problem

好题

题意:一个有 \(n\) 个数的非负数组,\(n\) 次操作每次选一个数删掉后计算 \(\text{MEX}\) 并累加,问能达到的最小价值。

\(1\le n \le 5000\)\(1\le a_i\le10^9\)

根据样例就能看明白,让总价值最小就是以最小的价值让 \(\text{MEX}\) 变为 \(0\),并且我们只关心小于一开始 \(\text{MEX}\) 的数的出现次数。

一开始我想假了,认为最优解一定是从小于 \(\text{MEX}\) 的某个数开始删一路删到 \(0\),喜提 2WA。

耽误了很多时间,直到拍到一组样例:

9
1 1 0 3 3 0 2 4 0
Wrong Answer: 8
Correct Answer: 6

删法是先删掉 \(2\),然后删 \(0\),答案并不连续,所以考虑dp。

\(dp[i]\) 表示目前从 \(\text{MEX}\) 开始删到 \(i\) 的最小价值,则 \(dp[i]=\mathop\min\limits_{j\in[i+1,\text{MEX}]}(dp[i],dp[j]+cnt[i]\times j)\).

因为一开始有一个数是没有贡献的,所以答案是 \(dp[0]-\text{MEX}\)


【题解】Codeforces Round 901 (Div.2) 4 of 7
https://kisuraop.github.io/posts/80b55541.html
作者
KisuraOP
发布于
2023年10月1日
许可协议