贪心算法

P1223 排队接水

要使得后面等待的时间少,那么就是要尽量让接水时间短的人排在前面。

按照接水所需时间从小到大排序,即为接水的顺序。

注意算平均值的时候不要把最后一个人的接水时间也加上。

\(AC code\)

#include<bits/stdc++.h>
using namespace std;
long long a,b[1005],c[1005];
double d;
int main()
{
	scanf("%lld",&a);
	for(int i=1;i<=a;i++)
	{
		scanf("%lld",&b[i]);
		c[i]=c[i-1]+1;
	}
	for(int i=1;i<=a;i++)
	{
		for(int j=1;j<a;j++)
		{
		    if(b[j]>b[j+1])
		    {
		    	swap(b[j],b[j+1]);
		    	swap(c[j],c[j+1]);
		    }
		}
	}
	for(int i=1;i<=a;i++)
	{
		printf("%lld ",c[i]);
		
	}
	for(int i=1;i<a;i++)
	{
		b[i]+=b[i-1];
	}
	for(int i=1;i<a;i++)
	{
		b[i]+=b[i-1];
	}
	d=(double)b[a-1]/a;
	printf("\n%.2lf",d);
    return 0;
}

未完待续...

上一篇:PTA 1005 继续(3n+1)猜想 c++实现


下一篇:弹珠游戏--嘴平乔治猪的刷题整理