社区讨论

性感弱鸡在线求救

P1031[NOIP 2002 提高组] 均分纸牌参与者 9已保存回复 10

讨论操作

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

当前回复
10 条
当前快照
1 份
快照标识符
@mi7xnz09
此快照首次捕获于
2025/11/21 05:18
4 个月前
此快照最后确认于
2025/11/21 05:18
4 个月前
查看原帖
CPP
#include<iostream>
using namespace std;
int n=0,total=0,b=0,i=1,k=1,c=0,d=0,e=0,m=0;
int main()
{
	cin>>n;
	k=n;
	int a[n+1];
	for(int j=1;j<=n;j++)
	{
		cin>>a[j];
		m=m+a[j];
	}
	m=m/n;
	do
	{
		if(a[i]==m)
		i++;
		else 
		{
			if(a[i]>m)
			{
				if(a[i]-m==b)
				{
					b=0;
					total=total+c;
					c=0;
				}
				if(a[i]-m>b)
				{
					total=total+c;
					c=0;
					a[i]=a[i]-b;
					b=0;
					a[i+1]=a[i+1]+a[i]-m;
					total++;
				}
				if(a[i]-m<b)
				{
					total++;
					a[i+1]=a[i]+a[i+1]-m;
					c++;
				}
			}
			if(a[i]<m)
			{
				b=m-a[i];
				c++;
			}
			i++;
		}
		if(a[k]==m)
		k--;
		else 
		{
			if(a[k]>m)
			{
				if(a[k]-m==d)
				{
					d=0;
					total=total+e;
					e=0;
				}
				if(a[k]-m>d)
				{
					a[k]=a[k]-d;
					d=0;
					total=total+e;
					e=0;
					a[k-1]=a[k-1]+a[k]-m;
					total++;
					for(int l=n;l<=k;n--)
					a[l]=m;
				}
				if(a[k]-m<d)
				{
					total++;
					a[k-1]=a[k-1]+a[k]-m;
					e++;
				}
			}
			if(a[k]<m)
			{
				d=m-a[k];
				e++;
			}
			k--;
		}
	}while(k-i==0||k-i==1);
	i--;
	do
	{
		if(a[i]==m)
		i++;
		else 
		{
			if(a[i]>m)
			{
				if(a[i]-m==b)
				{
					b=0;
					total=total+c;
					c=0;
				}
				if(a[i]-m>b)
				{
					total=total+c;
					c=0;
					a[i]=a[i]-b;
					b=0;
					a[i+1]=a[i+1]+a[i]-m;
					total++;
				}
				if(a[i]-m<b)
				{
					total++;
					a[i+1]=a[i]+a[i+1]-m;
					c++;
				}
			}
			if(a[i]<m)
			{
				b=m-a[i];
				c++;
			}
			i++;
		}
	}while(i==n);
	cout<<total;
	return 0;
}
那啥,弱鸡我用了一种特别的方法,然后超时了,求大佬指教

回复

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

正在加载回复...