Atcoder Beginner Contest 400(ABC400), Problem A ~ G

前言

感觉都比较好想,但是有的时候就是想不到。

A - ABC400 Party

\(A \mid 400\) 就输出 \(\frac{400}{A}\),否则为 \(-1\)

Submission

B - Sum of Geometric Series

循环边算边判,判到大于 \(10^9\) 直接退出。

有点像 CSP-J2022 T1。

Submission

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}\)

Submission

D - Takahashi the Wall Breaker

考虑在网格图上建图跑最短路即可,如果当前方向上第一格可通过,连一条边权 \(0\) 的边;如果不可通过,就连一条边权为 \(1\) 的边,再向后走一格看是否为墙,如果是再连一条边权 \(1\) 的边。

总边数可能较多

Submission

E - Ringo's Favorite Numbers 3

因为 \(N \leq 10^{12}\),考虑筛 \(O(\sqrt{n})\) 内的质数然后枚举倍数,找出恰含两个质因子的数的平方,这样就保证 \(k\) 定为偶数。

每次查询二分即可。

Submission

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}\}\)

Submission

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\) 要选:

\[f_{i,j,S} \leftarrow \max{f_{i-1,j,S\oplus 2^k} + a_{i,k}} \]

否则:

\[f_{i,j,S} \leftarrow \max{f_{i-1,j,S}} \]

\(g\) 其实就同理了,只不过倒序转移:

\[g_{i,j,S} \leftarrow \max{g_{i+1,j-1,S\oplus 2^k}} \]

以及:

\[g_{i,j,S} \leftarrow \max{g_{i+1,j,S}} \]

最后答案:

\[\max\limits_{j=0}^{3}{\max\limits_{S=0}^{7}\{f_{2k,j,S} + g_{2k + 1,j,S}\}} \]

完结撒花。

Submission

posted @ 2025-04-06 10:59  xAlec  阅读(102)  评论(2)    收藏  举报