码迷,mamicode.com
首页 > 其他好文 > 详细

POJ 1700

时间:2018-09-22 12:38:34      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:turn   amp   std   ==   main   getchar   cst   get   algorithm   

这是一道贪心的题目

(贪心题好难,他们都是怎么想出来的)

当总人数大于等于4时,有两种情况

1 最快和最慢的过河,最快的回来;

 最快和次慢的过河,最快的回来。

2 最快和次快的过河,最快的回来;

 最慢和次慢的过河,次快的回来。

每次反复迭代,直到总人数比四小。

若总人数等于3 ,则是最快和最慢的过河,最快的回来,次快和最快过河。

若总人数等于2,则是最快和次快的过河。

若总人数等于1,则最快的过河。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
inline int read(){
	int x=0,f=1,ch=getchar();
	while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
	while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
	return x*f;
}
int a[1005];
int main(){
	int T=read();
	while(T--){
		int n=read(),ans=0;
		for(int i=1;i<=n;i++) a[i]=read();
		sort(a+1,a+1+n);
		while(n>=4) ans+=min(a[1]+a[2]*2+a[n],a[1]*2+a[n-1]+a[n]),n-=2;
		if(n==1) ans+=a[1];
		if(n==2) ans+=a[2];
		if(n==3) ans+=a[1]+a[2]+a[3];
		printf("%d\n",ans);
	}
	return 0;
}

  

POJ 1700

标签:turn   amp   std   ==   main   getchar   cst   get   algorithm   

原文地址:https://www.cnblogs.com/gcyyzf/p/9689620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!