90分 额……
查看原帖
90分 额……
495599
CSZD楼主2021/10/10 21:00

防止大佬们看不懂特意加了注释

#include<iostream>
#include<cstdio>
using namespace std;
long long a[10001],b[10001];
long long n,m,s=0,flag;
int main()
{
    //freopen("water.in","r",stdin);
	//freopen("water.out","w",stdout);
	cin>>n>>m;
	int start=1;
	for(int i=1;i<=n;i++)cin>>a[i];
	if(n<=m)//水龙头比人多 
	{
		int max=-1;
		for(int i=1;i<=n;i++)if(a[i]>max)max=a[i];//算出时间最大者 
		cout<<max<<endl;
		return 0;
	}
	else
	{
		while(1)
		{
			int g=0;//人数初始为0 
			flag=0;
			for(int i=start;i<=n;i++)
			{
				if(i==start&&b[i]==1)start++;//不知道怎么解释QAQ 
				if(b[i]==0)//如果需要接 
				{
					a[i]--;//接水量-- 
					g++;//接水人数++ 
				}
				else continue; 
				if(a[i]==0)b[i]=1;//接完了 
				if(g==m)break;//g为水龙头数,当水龙头数满时终止循环 
			}
			s++;//秒数++ 
	    	for(int i=start;i<=n;i++)if(b[i]==0)flag=1;//还有没接完的 
	        if(flag==0)break;//全都接完 
		}
		cout<<s<<endl;
		return 0;
	}
}

最后一个点TLE,改了好几次了,实在是不会优化QAQ 大佬们救救蒟蒻吧~~~~(>_<)~~~~

2021/10/10 21:00
加载中...