CF1411D Grime Zoo
题目描述
现在,XXOC 的 rap 是一个由 $0$、$1$ 和问号组成的字符串。不幸的是,总有人会黑他。每出现一次子序列 $01$,就会有 $x$ 条愤怒评论;每出现一次子序列 $10$,就会有 $y$ 条愤怒评论。你需要将所有问号替换为 $0$ 或 $1$,使得愤怒评论的总数尽可能少。
如果字符串 $b$ 可以通过从字符串 $a$ 中删除若干字符得到,则称 $b$ 是 $a$ 的一个子序列。如果剩余字符的位置集合不同,则认为是不同的子序列出现。
输入格式
第一行包含字符串 $s$,表示 XXOC 的 rap($1 \leq |s| \leq 10^5$)。
第二行包含两个整数 $x$ 和 $y$,分别表示每出现一次子序列 $01$ 和 $10$,XXOC 会收到的愤怒评论数($0 \leq x, y \leq 10^6$)。
输出格式
输出一个整数,表示最小的愤怒评论总数。
说明/提示
在第一个样例中,一种最优的替换方式是 $001$。这样会有 $2$ 个子序列 $01$,$0$ 个子序列 $10$。总的愤怒评论数为 $2 \times 2 + 0 \times 3 = 4$。
在第二个样例中,一种最优的替换方式是 $11111$。这样会有 $0$ 个子序列 $01$,$0$ 个子序列 $10$。总的愤怒评论数为 $0 \times 13 + 0 \times 37 = 0$。
在第三个样例中,一种最优的替换方式是 $1100$。这样会有 $0$ 个子序列 $01$,$4$ 个子序列 $10$。总的愤怒评论数为 $0 \times 239 + 4 \times 7 = 28$。
在第四个样例中,一种最优的替换方式是 $01101001$。这样会有 $8$ 个子序列 $01$,$8$ 个子序列 $10$。总的愤怒评论数为 $8 \times 5 + 8 \times 7 = 96$。
由 ChatGPT 4.1 翻译