CF1895G Two Characters, Two Colors
题目描述
给定一个只包含字符 $0$ 和/或 $1$ 的字符串。你需要将该字符串的每个字符涂成红色或蓝色。
如果你将第 $i$ 个字符涂成红色,你可以获得 $r_i$ 个金币。如果你将其涂成蓝色,你可以获得 $b_i$ 个金币。
涂色结束后,你将所有蓝色字符从字符串中移除,并统计剩余字符串中的逆序对数量(即左边字符为 $1$,右边字符为 $0$ 的字符对的数量)。对于每一个逆序对,你需要支付 $1$ 个金币。
你最多能获得多少金币?
输入格式
输入的第一行为一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。
每个测试用例包含四行:
- 第一行为一个整数 $n$($1 \le n \le 4 \cdot 10^5$),表示字符串的长度;
- 第二行为一个长度为 $n$ 的字符串 $s$,其中每个字符为 $0$ 或 $1$;
- 第三行为 $n$ 个整数 $r_1, r_2, \dots, r_n$($1 \le r_i \le 10^{12}$);
- 第四行为 $n$ 个整数 $b_1, b_2, \dots, b_n$($1 \le b_i \le 10^{12}$)。
额外限制:所有测试用例中 $n$ 的总和不超过 $4 \cdot 10^5$。
输出格式
对于每个测试用例,输出一个整数,表示你最多能获得的金币数。
说明/提示
示例中各测试用例的解释(蓝色字符已下划线,红色字符未下划线):
1. $0100\underline{0}1\underline{0}$;
2. $10\underline{11}1$;
3. $\underline{0}1\underline{00000000}$;
4. $0\underline{1}010000$。
由 ChatGPT 4.1 翻译