Atcoder Beginner Contest 400(ABC400), Problem A ~ G
前言
感觉都比较好想,但是有的时候就是想不到。
A - ABC400 Party
\(A \mid 400\) 就输出 \(\frac{400}{A}\),否则为 \(-1\)。
B - Sum of Geometric Series
循环边算边判,判到大于 \(10^9\) 直接退出。
有点像 CSP-J2022 T1。
C - 2^a b^2
考虑直接枚举 \(a\),这样就是 \(O(\log N)\) 级别的。
这样对于 \(\forall a \in [1,\log N]\),对应的 \(b\) 的取值可能的个数就有 \(\sqrt{\frac{N}{2^a}}\) 种,但是请注意,这样有些数会选重。
假设 \(x = 2^i \times a,y = 2^i \times b\),如果说 \(b = 2^p \times a\),那么 \(b\) 之后一定会被筛到,这样就会选重。
所以我们要的就是 \(\sqrt{\frac{N}{2^a}}\) 中的奇数个数,也就是 \(\frac{\sqrt{\frac{N}{2^a}} + 1}{2}\)。
D - Takahashi the Wall Breaker
考虑在网格图上建图跑最短路即可,如果当前方向上第一格可通过,连一条边权 \(0\) 的边;如果不可通过,就连一条边权为 \(1\) 的边,再向后走一格看是否为墙,如果是再连一条边权 \(1\) 的边。
总边数可能较多。
E - Ringo's Favorite Numbers 3
因为 \(N \leq 10^{12}\),考虑筛 \(O(\sqrt{n})\) 内的质数然后枚举倍数,找出恰含两个质因子的数的平方,这样就保证 \(k\) 定为偶数。
每次查询二分即可。
F - Happy Birthday! 3
考虑操作反过来,一开始颜色状态为 \(C\),要把所有颜色去掉的最小代价。
看到 \(n\leq 400\) 并且是区间问题,考虑区间 dp。
记 \(dp_{l,r}\) 表示将 \([l,r]\) 内的颜色去掉的最小代价。
-
如果当前操作不覆盖整个区间,枚举分界点 \(k\) 做区间合并,\(dp_{l,r} \leftarrow dp_{l,k} + dp_{k+1,r}\)。
-
如果当前操作覆盖整个区间,此时满足 \(c_l = c_r\),要么区间全是无颜色,要么全是 \(c_l\)。
- 考虑枚举分界点 \(k\) 满足 \(c_k = c_l\),这时候把 \([k+1,r-1]\) 变成无颜色是无额外代价的,因为已经在 \(dp_{l,k}\) 中计算过了,\([l,k]\) 变成无颜色需要额外增加 \(r - k\),即可以理解区间向后扩张了 \(r - k\) 的长度,\(dp_{l,r} \leftarrow dp_{l,k} + dp_{k+1,r-1} + r - k\)。
破环成链,答案就是 \(\min\limits_{i=1}^{n}\{dp_{i,i+n-1}\}\)。
G - Patisserie ABC 3
记 \(a_{i,k}(k\in [1,3])\) 表示 \(x_i,y_i,z_i\)。
考虑给题目一个转化:
\(\forall i \in [1,n]\),你在 \(x_i,y_i,z_i\) 中选择一个或者不选,每一种选了偶数个的最大价值和。
其实在没有偶数个的限制是很好做的,按照 \(\max\{x_i,y_i,z_i\}\) 从大到小排序,选择前 \(2K\) 个就行。
但是加上了限制呢?
如果说把前 \(2K\) 个选了,可能会存在不满足偶数个的一种类型,也就是说要进行调整,前 \(2K\) 个中选了之后调整一定更优。
这样来看就是前 \(2K\) 个中可能会有 \(t\) 个不会被选到,这个 \(t\) 的数量其实不会很多。
也就是说有 \(t\) 个不会被选的名额分到了 \(3\) 种参数上,但是你不想让 \(t\) 太大,结论告诉我们 \(t = 3\)。
考虑抽屉原理,假设 \(t = 4\),那么选择的 \(x_i,y_i,z_i\) 一定会有那个是不被选了两个的,那么不在前 \(2K\) 个当中的 \(x_i,y_i,z_i\) 也是有 \(4\) 个被选,且有两个重复的。
如果说你把后面选的两个重复替换到前面,奇偶性不会改变(如果是奇数依旧不满足要求),但是会更优(前面选出来不一定是每组最大的),因为你可以选择其它的来改变奇偶性或者增加答案,综上 \(t = 3\) 最优。
开始 dp,记 \(f_{i,j,S}\) 表示前 \(i\) 个不被选的有 \(j\) 个,集合 \(S\) 表示每种数(\(x_i,y_i,z_i\))被选的个数的奇偶性(\(0\) 偶 \(1\) 奇),\(g_{i,j,S}\) 表示考虑后面 \([i,n]\) 中选了 \(j\) 个,集合 \(S\) 同理,\(f,g\) 一开始都是极小值,\(f_{0,0,0} = g_{n+1,0,0} = 0\)。
考虑 \(f\) 的转移,假设当前 \(i\) 要选:
否则:
\(g\) 其实就同理了,只不过倒序转移:
以及:
最后答案:
完结撒花。

浙公网安备 33010602011771号