社区讨论

黑漆覆盖了最后两片青青草原

P5019[NOIP 2018 提高组] 铺设道路参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@lozuvzut
此快照首次捕获于
2023/11/15 22:26
2 年前
此快照最后确认于
2023/11/16 10:42
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int a[100005],n,ans,maxn;
string str[10005],M;
int num(string alg)
{
	int cnt=0;
	string alg1="";
	char Last;
	if(alg[0]=='0') Last='1';
	else Last='0';
	for(int i=0;i<alg.length();i++)
	{
		if(Last!=alg[i])
		{
			Last=alg[i];
			alg1+=alg[i];
		}
	}
	for(int i=0;i<alg1.length();i++)
	{
		if(alg1[i]=='1')
		{
			cnt++;
		}
	}
	return(cnt);
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		M+="0";
	}
	for(int i=1;i<=n;i++)
	{
		int x;
		scanf("%d",&x);
		a[i]=x;maxn=max(maxn,x);
	}
	for(int i=1;i<=maxn;i++)
	{
		str[i]=M;
	}
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=a[i];j++)
		{
			str[j][i-1]='1';
		}
	}
	for(int i=1;i<=maxn;i++)
	{
		ans+=num(str[i]);
	}
	cout<<ans;
	return(0);
}

回复

0 条回复,欢迎继续交流。

正在加载回复...