首页 > 其他分享 >Codeforces997A-Convert to Ones

Codeforces997A-Convert to Ones

时间:2022-11-22 21:02:26浏览次数:52  
标签:子串 Convert int invert d% Codeforces997A Ones ans lld


期末考炸完后重新开始做OI,先在Codeforces里面做一段时间锻炼一下思维,最近几篇都会写CF的文章,尽量把思维写得详细一点。

Codeforces997A-Convert to Ones_#define


题解:

这题里面x,y的大小是很重要的。

我们发现如果一个子串invert n次等于那个子串reverse n-1次再invert 1次。

那么就很显然了。

如果y小则直接每一个0的子串都invert

如果x小则先reverse之后再invert 1次。

Code:

#include<bits/stdc++.h>
#define N 300005
using namespace std;
char s[N];
int main()
{
int n,x,y;
scanf("%d%d%d",&n,&x,&y);
scanf("%s",s);
int p=0;
for(int i=0;i<n;i++)
if(s[i]=='0')p++;
if(p==0)
{
puts("0");
return 0;
}
long long ans=0;
if(x>=y)
{
for(int i=1;i<n;i++)
if(s[i]=='1'&&s[i-1]=='0')ans+=y;
if(s[n-1]=='0')ans+=y;
printf("%lld\n",ans);
}else
{
if(s[0]=='0')p=1;else p=0;
for(int i=1;i<n;i++)
if(s[i]=='0')
{
p++;
if(p>1&&s[i-1]=='1')ans+=x;
}
ans+=y;
printf("%lld\n",ans);
}
return 0;
}


标签:子串,Convert,int,invert,d%,Codeforces997A,Ones,ans,lld
From: https://blog.51cto.com/u_15888102/5878486

相关文章