Codeforces Round #684 (Div. 2) A - C2 题解
A Buy the String
题意
给定一个长度为 n n n 的01串,你可以用 h h h 的代价把字符串中任意一个字符取反,最终你要把这个01串买下来,0的单价为 c 0 c_0 c0,1的单价为 c 1 c_1 c1。现给你 n , h , c 0 , c 1 n,h,c_0,c_1 n,h,c0,c1以及一个01串,问你最少花多少可以买下这个串。输出最小总价。
思路
贪心,设 c 0 < c 1 c_0 \lt c_1 c0<c1,若 c 1 − c 0 > h c_1 - c_0 > h c1−c0>h,则把所有1换成0。即1的单价为 m i n ( c 0 + h , c 1 ) min(c_0+h,c_1) min(c0+h,c1),0的单价为 c 0 c_0 c0。
代码
#include <bits/stdc++.h>
using namespace std;
int main() {
int T;
cin >> T;
while (T--) {
int n, c0, c1, h;
cin >> n >> c0 >> c1 >> h;
string s;
cin >> s;
int ans = 0;
if (c0 > c1) {
for (char ch : s) {
if (</