专栏文章

题解:AT_abc225_f [ABC225F] String Cards

AT_abc225_f题解参与者 3已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@miqff3zf
此快照首次捕获于
2025/12/04 03:55
3 个月前
此快照最后确认于
2025/12/04 03:55
3 个月前
查看原文
首先很容易想到这一题:P1012
这一题里面用到了一个贪心策略:按照这个方式排序 a+b>b+aa+b>b+a
于是一开始的思路直接照做,排完序取前 kk 个,然后喜提 WA。
考虑一下问题出在哪,很显然,P1012 最终得到的字符串长度是固定的,但本题不是,比如下面这组数据,就会因为答案字符串的长度而寄:
MARKDOWN
3 2
bba
bb
bba
按照原先的思路会这样排序:bba bba bb,然后就挂了。
那就 DP 吧。
不难想到状态 dpi,jdp_{i,j} 是考虑到第 ii 个字符串时取 jj 个字符串的答案,但因为如果考虑的是 [1,i][1,i] 的话仍然会被字符串长度背刺,而考虑 [i,n][i,n] 就没问题了。
但在转移前我们首先要排序,这样可以更方便的求出答案,这种技巧叫做 exchange argument,用和 P1012 一样的方式就行了。
转移很简单,每个字符串选或不选,有 dpi,j=min(si+dpi+1,j1,dpi+1,j)dp_{i,j}=\min(s_i+dp_{i+1,j-1},dp_{i+1,j})
只用考虑把 sis_i 放在 dpi+1,j1dp_{i+1,j-1} 前面的情况就够了,由于我们排过序,所以 dpi+1,j1+sidp_{i+1,j-1}+s_i 一定大于 si+dpi+1,j1s_i+dp_{i+1,j-1}
同时也有边界条件 dpn,1=sndp_{n,1}=s_n
记得初始化。

评论

2 条评论,欢迎与作者交流。

正在加载评论...