CF1440A Buy the String
题目描述
给定四个整数 $n$、$c_0$、$c_1$ 和 $h$,以及一个长度为 $n$ 的二进制字符串 $s$。
二进制字符串是仅由字符 $0$ 和 $1$ 组成的字符串。
你可以将字符串 $s$ 中的任意字符进行更改(更改后字符串仍需为二进制字符串)。每更改一个字符需要支付 $h$ 个硬币。
在进行若干次(也可以不进行)更改后,你需要购买整个字符串。购买字符串时,你需要购买其中的每一个字符。购买字符 $0$ 需要支付 $c_0$ 个硬币,购买字符 $1$ 需要支付 $c_1$ 个硬币。
请你计算,购买该字符串所需支付的最少硬币数。
输入格式
第一行包含一个整数 $t$($1 \leq t \leq 10$),表示测试用例的数量。接下来的 $2t$ 行描述每个测试用例。
每个测试用例的第一行包含四个整数 $n$、$c_0$、$c_1$、$h$($1 \leq n, c_0, c_1, h \leq 1000$)。
每个测试用例的第二行包含一个长度为 $n$ 的二进制字符串 $s$。
输出格式
对于每个测试用例,输出一个整数,表示购买该字符串所需支付的最少硬币数。
说明/提示
在第一个测试用例中,你可以直接购买所有字符并支付 $3$ 个硬币,因为字符 $0$ 和 $1$ 的价格都是 $1$ 个硬币。
在第二个测试用例中,你可以先将第 $2$ 个和第 $4$ 个字符从 $1$ 改为 $0$,为此支付 $2$ 个硬币。此时字符串变为 $00000$。然后你可以购买该字符串,支付 $5 \times 10 = 50$ 个硬币。总共需要支付 $2 + 50 = 52$ 个硬币。
由 ChatGPT 4.1 翻译