Codeforces Global Round 7
A. Bad Ugly Numbers
Solution
输出 $999\cdots98$ 或者$233\cdots3$ 之类的都行。
Code
1 |
|
B. Maximums
Solution
从左到右依次恢复即可。
Code
1 |
|
C. Permutation Partitions
Solution
最大值就是最大的 $k$ 个数之和。统计方案数时考虑在两个选出的数中插一个隔板,乘法原理即可。
Code
1 |
|
D1&D2. Prefix-Suffix Palindrome
Solution
先把头尾对称的字符加入答案并去掉,问题转化为寻找最大前缀/后缀回文串。为方便处理,字符两两之间插入 #
使长度为奇数。然后枚举中间点,通过正反哈希值判断能否形成回文串。
复杂度:$O(|s|)$
Code
1 |
|
E. Bombs
Solution
【参考博客】答案是单调不增的。我们只需递减枚举答案上界 $x$,判断答案是否小于 $x$.
若答案小于 $x$,那么所有 $\geq x$ 的点都会被炸掉,于是乎:
- 最靠右的 $\geq x$ 的点的右侧(包括自己)必须要有至少 $1$ 个炸弹
- 次靠右的 $\geq x$ 的点的右侧必须要有至少 $2$ 个炸弹
- $\cdots$
- 第 $k$ 靠右的 $\geq x$ 的点的右侧必须要有至少 $k$ 个炸弹
我们维护一个序列 $a_i=其右的炸弹数-其右 \geq x 的数的数量$,若所有 $a_i$ 都 $\geq0$,则答案小于 $x$.
于是我们对这个序列的操作有:
- 加入一个炸弹,将加入位置及其以前的所有 $a_i$ 加 $1$;
- $x$ 变成 $x-1$,将数 $x-1$ 所在位置及其以前的所有 $a_i$ 减 $1$;
- 询问所有 $a_i$ 的最小值。
线段树即可。
复杂度:$O(n\lg n)$
Code
1 |
|
Codeforces Global Round 7
http://xyfjason.github.io/blog-xcpc/2020/03/20/Codeforces-Global-Round-7/