摘要: 状态表示: \(f(i)\):前缀$s[1 \sim i]$能否由子串集合中的元素表示。 $f(i)$只有$true$和$false$两种取值。 状态转移: 对每个子串$p[i]$,若$s[i]$大小为$p[i]$长度的后缀与$p[i]$匹配,则有如下转移: \[ f(i) \ |= f(i-p[i 阅读全文
posted @ 2021-06-04 15:28 Dazzling! 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 同12. 整数转罗马数字 pair<int,string> mp[]={ {1000, "M"}, {900, "CM"}, {500, "D"}, {400, "CD"}, {100, "C"}, {90, "XC"}, {50, "L"}, {40, "XL"}, {10, "X"}, {9, 阅读全文
posted @ 2021-06-04 14:15 Dazzling! 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 罗马数字由 7 个不同的单字母符号组成,每个符号对应一个具体的数值。此外,减法规则(如问题描述中所述)给出了额外的 6 个复合符号。这给了我们总共 13 个独特的符号(每个符号由 1 个或 2 个字母组成),如下图所示。 我们用来确定罗马数字的规则是:对于罗马数字从左到右的每一位,选择尽可能大的符号 阅读全文
posted @ 2021-06-04 12:01 Dazzling! 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 双指针维护长度为$k$的区间内未选的数的和的最大值,之后再加上可选的数即可。 const int N=1e5+10; PII a[N]; int n,k; int main() { cin>>n>>k; for(int i=0;i<n;i++) cin>>a[i].fi; for(int i=0;i 阅读全文
posted @ 2021-06-04 10:59 Dazzling! 阅读(81) 评论(0) 推荐(0) 编辑