题意:
给你一个长度为 nnn 的 010101串 ,你有两种操作:

1.将一个子串翻转,花费 XXX

2.将一个子串中的0变成1,1变成0,花费 YYY

求你将这个01串变成全是1的串的最少花费。

首先,我们可以将串按照0,10,10,1这划分,例如:
«00011001110»−>«000»+«11»+«00»+«111»+«0»«00011001110» -> «000» + «11» + «00» + «111» + «0»«00011001110»−>«000»+«11»+«00»+«111»+«0»,可以看出只有相邻的010101串间进行操作才是有意义的。
将左面的 000 串与右面的 111 进行 “交换” 有两种办法:
1.将000 同一修改为 111.
2.将该串与靠右的一个111串交换(即翻转).
由于题中X,YX,YX,Y 是一个确定的值,这就使得我们每次的交换方法一定是相同的。然而,如果一直用第 222 种方法进行变换,最终必定还要使用一次 111 操作来将已经连城的一排 000, 统一修改为 111。即最小花费为:(p−1)∗min(x,y)+y(p-1)*min(x,y)+y(p−1)∗min(x,y)+y,ppp 为原序列中 000 串的数量。

Code:

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<iostream>
using namespace std;
const int maxn = 300000 + 4;
int nex[maxn];
char str[maxn];
int main()
{int n, x, y, cnt = 0;scanf("%d%d%d",&n,&x,&y);scanf("%s",str + 1);str[0] = str[1] == '1' ? '0' : '1'; for(int i = 1;i <= n; ++i) if(str[i] == '0' && str[i] != str[i - 1]) ++cnt;if(cnt == 0) printf("0");else cout << (long long)(cnt - 1) * min(x, y) + y;return 0;
}

转载于:https://www.cnblogs.com/guangheli/p/9845121.html

Codeforces Round #493 (Div. 2) C. Convert to Ones 乱搞_构造_好题相关推荐

  1. Codeforces Round #445 div.2 D. Restoration of string 乱搞

    D. Restoration of string 题意:给你n个字符串,让你构造一个终串,使得这n个字符串都是终串的最小频繁子串,如果不存在输出NO.  最频繁子串:出现次数最多的子串 tags: 直 ...

  2. Codeforces Round #588 (Div. 2) F. Konrad and Company Evaluation 图论 + 建反图 好题

    传送门 文章目录 题意: 思路: 题意: 给你一张nnn个点mmm条边的图,其中每个点iii初始编号为iii,边是有向的,方向为从编号大的指向编号小的.定义一个贡献为存在某三个点a,b,ca,b,ca ...

  3. Codeforces Round #493 (Div. 2):C. Convert to Ones

    题意:给你一个01串,你有两种操作:①翻转某个子串,代价为x:②将某个子串的0和1全部取反,代价为y,求将整个串全部修改成1的最小代价 思路:如果全为1,直接输出0,否则假设有p个连"0&q ...

  4. Cutting Codeforces Round #493 (Div. 2)

    Cutting There are a lot of things which could be cut - trees, paper, "the rope". In this p ...

  5. Codeforces Round #493 (Div. 2):D. Roman Digits

    题意(转换后):给你一个n,问在满足x+y+a+b=n的情况下,x+5y+10a+50b有多少种不同的结果 结论:当n≤11的时候直接暴力,n≥12满足F(i)=F(i-1)+49 思路:假设有这样道 ...

  6. Codeforces Round #649 (Div. 2)C. Ehab and Prefix MEXs[排列的构造]

    C. Ehab and Prefix MEXs 题目大意: 解题思路:题目说保证a数组是非递减的,那么如果某位置a[i]!=a[i−1]a[i]!=a[i-1]a[i]!=a[i−1]那么这个位置ii ...

  7. Codeforces Round #703 (Div. 2)(A ~ F)超高质量题解【每日亿题2 / 19】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A. Shifting Stacks B - Eastern Exhibition C1 - G ...

  8. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...

  9. Codeforces Round #700 (Div. 2)A~D2解题报告

    Codeforces Round #700 (Div. 2)A~D2解题报告 A Yet Another String Game 原题链接 http://codeforces.com/contest/ ...

最新文章

  1. 阿里云高可用-容灾解决方案
  2. 剑指offer06.从尾到头打印链表
  3. 【OpenCV3】阈值化操作——cv::threshold()与cv::adaptiveThreshold()详解
  4. stream distinct去重_再来看看Java的新特性——Stream流
  5. promise的状态以及api介绍_Promise从入门到自定义 | 尚硅谷Promise新版视频发布!
  6. Android自动化页面测速在美团的实践
  7. 20155336虎光元 Exp1PC平台逆向破解及Bof基础实践
  8. python通过文件路径读取图片
  9. java详细教程_java超详细教程适合初学者深入掌握Java知识.ppt
  10. 笔记本插入耳机依然外放,但开机前插上耳机可以使用耳机 (解决了我多年的问题)
  11. 关于侵权Sinesafe官方网站,仿冒、抄袭等恶劣行为的公告
  12. CodeForces 949A Zebras
  13. 淘宝、拼多多、京东等购物平台的优惠券公众号免费搭建持续更新
  14. 高并发服务端分布式系统设计概要
  15. 云计算中心怎么选址?
  16. Hyper-V 2016 系列教程50 某德国制造型企业上线案例分享
  17. java flash 播放器_视频播放插件Video.js
  18. 国外网络推广的方式有哪些?海外自媒体平台推广你真的会做吗?
  19. 28181协议、设备配置装维、测试(海康网络摄像机)
  20. 华为matepad鸿蒙系统,预装鸿蒙系统 华为MatePad Pro 2界面曝光

热门文章

  1. 大小端、位段和内存对齐
  2. 如何解决在每次开机后运行lcm相关命令会提示需要配置IP的问题
  3. NS2安装笔记 - Ubuntu9.10
  4. windows远程访问树莓派方法(+树莓派启动方法)
  5. 建立数据库的原则(怎样建立一个好的数据库)
  6. C/C++拾遗(二)
  7. 人口预测和阻尼-增长模型_使用分类模型预测利率-第3部分
  8. python gis库_使用开放的python库自动化GIS和遥感工作流
  9. 2019年最新银行存款利息,有的银行最高给到5.45%
  10. 到底逾期几次才会影响贷款申请?