Codeforces Round #493 (Div. 2) C. Convert to Ones 乱搞_构造_好题
题意:
给你一个长度为 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 乱搞_构造_好题相关推荐
- Codeforces Round #445 div.2 D. Restoration of string 乱搞
D. Restoration of string 题意:给你n个字符串,让你构造一个终串,使得这n个字符串都是终串的最小频繁子串,如果不存在输出NO. 最频繁子串:出现次数最多的子串 tags: 直 ...
- Codeforces Round #588 (Div. 2) F. Konrad and Company Evaluation 图论 + 建反图 好题
传送门 文章目录 题意: 思路: 题意: 给你一张nnn个点mmm条边的图,其中每个点iii初始编号为iii,边是有向的,方向为从编号大的指向编号小的.定义一个贡献为存在某三个点a,b,ca,b,ca ...
- Codeforces Round #493 (Div. 2):C. Convert to Ones
题意:给你一个01串,你有两种操作:①翻转某个子串,代价为x:②将某个子串的0和1全部取反,代价为y,求将整个串全部修改成1的最小代价 思路:如果全为1,直接输出0,否则假设有p个连"0&q ...
- Cutting Codeforces Round #493 (Div. 2)
Cutting There are a lot of things which could be cut - trees, paper, "the rope". In this p ...
- 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 思路:假设有这样道 ...
- 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 ...
- Codeforces Round #703 (Div. 2)(A ~ F)超高质量题解【每日亿题2 / 19】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A. Shifting Stacks B - Eastern Exhibition C1 - G ...
- Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...
- Codeforces Round #700 (Div. 2)A~D2解题报告
Codeforces Round #700 (Div. 2)A~D2解题报告 A Yet Another String Game 原题链接 http://codeforces.com/contest/ ...
最新文章
- 阿里云高可用-容灾解决方案
- 剑指offer06.从尾到头打印链表
- 【OpenCV3】阈值化操作——cv::threshold()与cv::adaptiveThreshold()详解
- stream distinct去重_再来看看Java的新特性——Stream流
- promise的状态以及api介绍_Promise从入门到自定义 | 尚硅谷Promise新版视频发布!
- Android自动化页面测速在美团的实践
- 20155336虎光元 Exp1PC平台逆向破解及Bof基础实践
- python通过文件路径读取图片
- java详细教程_java超详细教程适合初学者深入掌握Java知识.ppt
- 笔记本插入耳机依然外放,但开机前插上耳机可以使用耳机 (解决了我多年的问题)
- 关于侵权Sinesafe官方网站,仿冒、抄袭等恶劣行为的公告
- CodeForces 949A Zebras
- 淘宝、拼多多、京东等购物平台的优惠券公众号免费搭建持续更新
- 高并发服务端分布式系统设计概要
- 云计算中心怎么选址?
- Hyper-V 2016 系列教程50 某德国制造型企业上线案例分享
- java flash 播放器_视频播放插件Video.js
- 国外网络推广的方式有哪些?海外自媒体平台推广你真的会做吗?
- 28181协议、设备配置装维、测试(海康网络摄像机)
- 华为matepad鸿蒙系统,预装鸿蒙系统 华为MatePad Pro 2界面曝光