CCPC2023 秦皇岛 补题
G
显然答案就是固定的, 就是两个序列分别求相邻两个数绝对值的差加起来就可以了。
A
构造考虑让所有 gcd 都是1, 那么对角线上面按照往左, 往下, 往左, 往下连续放数就好了。
D
显然是每个优惠券用在其区间种最便宜的那个身上。 暴力用然后对所有的物品从小往大排序取就可以了。
F
结论 (波利尼亚克猜想): 对于任意奇偶性相同的 x, y, 存 在无穷个 z, 使得 x + z, y + z 为质数.
设 f(i, j) 表示填到 i, a[i] 是不变还是变成1还是变成偶数还是变成大于1的奇数, 转移即可。
J
直接状压DP。
I
把元素按照 $(\frac{x}{k}, x \mod k)$ 处理, 维护右边一列和已经加入最右边一列的倒数第二列, 使用 pbds :: tree 可以简单完成。
1 | using namespace __gnu_pbds; |
注意添加一维随机数用于去重。
C
基于找最小元的想法, 抵消区间两端的字符直到不相等为止, 那么肯定删掉一端的一些字符直到找到相等字符, 又因为只能删一段, 所以留下来的一定是从某个端点开始的回文串, 使用PAM做区间回文串即可。然后球方案数就是平移删除区间, 只用二分+哈希求LCP即可, 代码没啥细节。
M
定义原图中边为红的, 两个图之间的边是蓝的, 其实要求就是每个红边连通块里面有一对蓝边完整保留就行。
那这个直接对红色连通块 dp 就完事了, 设 dp(x, 0/1) 表示 x 子树里面有没有定一对蓝边保留, 直接转移即可。
B
类欧狗都不做。
E
E 挺有意思, 但是懒得写了。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 wrpwrpのBlog!