【比赛记录】ABC358
KSCD_
·
2024-06-16 21:21:42
·
个人记录
记录
A-E 速切,F 模拟了近一个小时遗憾缺了一点点,然后发现 G 过的人特别多,去写 G,到结束写的都是假做法。
题解
A - Welcome to AtCoder Land
string 判断即可,略过不表。
B - Ticket Counter
模拟,略过不表。
C - Popcorn
把每个摊位拥有的爆米花种类状压成一个二进制数,然后对 n 个摊位枚举 2^n 种选择,把所有选上的摊位的种类串或起来,如果等于 2^m-1 就是合法的,取 popcount 最小的 i 即可,时间复杂度 O(2^n\times n)
D - Souvenirs
先把 A,B 分别升序排序,之后依次处理每个 B_i ,用指针在 A 上扫,每次找到第一个 A_k\ge B_i 的 A_k 分给 B_i 即可。由于 A,B 都不降,这样一定是最优的。
E - Alphabet Tiles
组合计数 dp。由于最终的串数要求本质不同,所以考虑把 26 个不同字母依次插入串中,设 f_{i,j} 为考虑前 i 个字母时,长度为 j 且本质不同的字符串数,有 f_{0,0}=1 。
考虑转移,枚举 k 为第 i 个字母出现的次数即可,需要在 j 个位置中选出 k 个放 i ,其余按顺序放入长度为 j-k 的串,因此有 f_{i,j}=\sum_{k=0}^{\min(j,C_i)}f_{i-1,j-k}\times \binom{j}{k} ,填表法即可,时间复杂度 O(26k^2)
F - Easiest Maze
很显然最短路径长度为 n ,直接走下来即可。考虑在这条路上拓展,发现每次只能拓展 2 格,因此 k-n 必须为偶数才可能有解。拓展方法为每两行为一组同时向左扩展若干格,最后若多出一行(即 n 为奇数时)可以从 n-1 行向下两格两格扩展,所以最多扩展 2\lfloor\frac{n(m-1)}{2}\rfloor 格,判断无解后模拟填写即可。
G - AtCoder Tour
发现最终的最优方案一定为走到某一格 (x,y) 后一直停在这格直到结束,所以设 f_{i,j,k} 表示走 k 步到达 (i,j) 的最大权值和,用 f_{i,j,k}+A_{i,j}\times (K-k) 更新答案。由于走一个环一定不优于在环上某一点停留,所以 k 取到 HW 时一定已经包含最优解。时间复杂度 H^2W^2 。