327A - Flipping Game

链接:

https://codeforces.com/contest/327/problem/A

题意:

一个01串,做一次在i到j的反转(0变1)(1变0)求最多几个1

输入

5
1 0 0 1 0

输出量

4

输入

4
1 0 0 1

输出量

4

解:

100*100双指针暴力

实际代码:

#include<iostream>
using namespace std;
int z[105];
int o[105];
int sz[105];
int main()
{
	int Max=-1; 
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>sz[i];
		if(sz[i]==1) o[i]=o[i-1]+1;
		else o[i]=o[i-1];
		if(sz[i]==0) z[i]=z[i-1]+1;
		else z[i]=z[i-1];
	}
	/*
	for(int i=1;i<=n;i++)
	{
		cout<<o[i]<<" "<<z[i]<<endl;
	}
	*/
	int m1=o[n];
	for(int i=1;i<=n;i++)
	{
		for(int j=i;j<=n;j++)
		{
			int temp1=(z[j]-z[i]);//这么多0,变1; 
			int temp2=o[j]-o[i];//这么多1,变0; 
			if(sz[i]==1) temp2++;
			else temp1++;
			//cout<<temp1<<endl;
			//cout<<temp2<<endl;
			int temp3=m1-temp2+temp1;
			if(temp3>Max) Max=temp3;
		}
	}
	cout<<Max<<endl;
}

限制:

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值