Codeforces Round #684 (Div. 2) A - C2 题解

这篇博客提供了Codeforces Round #684 (Div. 2) 中A、B和C1、C2题目的详细解题思路和代码实现。题目包括A题的01串购买策略,B题的中位数之和最大化,以及C1、C2题的01矩阵翻转问题。作者通过贪心算法和操作优化来解决这些问题,并分享了在C2题中遇到的思考过程和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 c1c0>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 (</
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值