贪心 crosing river
2016-07-13 18:57
239 查看
题目:
DescriptionA group of N people wishes to go across a river with only one boat, which can at most carry two persons. Therefore some sort of shuttle arrangement must be arranged in order to row the boat back and forth so that all people may cross. Each person has a different
rowing speed; the speed of a couple is determined by the speed of the slower one. Your job is to determine a strategy that minimizes the time for these people to get across.
Input
The first line of the input contains a single integer T (1 <= T <= 20), the number of test cases. Then T cases follow. The first line of each case contains N, and the second line contains N integers giving the time for each people to cross the river. Each case
is preceded by a blank line. There won't be more than 1000 people and nobody takes more than 100 seconds to cross.
Output
For each test case, print a line containing the total number of seconds required for all the N people to cross the river.
Sample Input
1 4 1 2 5 10
Sample Output
17
题解:
有T种情况,N个人,一条船,每次最多过两人,过河的时间是速度慢的人所需的时间,求所有人过河的最短时间。将所有人过河所需的时间由小到大排序,依次由速度最快的两个人运送最慢的两个人过河。
有两种情况:1.T1+T2*2+Tn=T
2.2*T1+Tn-1+Tn=T
取最小值,当剩三个人的时候,写一个特判。
犯了一个比较弱智的问题,开数组的时候写进了循环里面,WA了好几次。
代码:
#include<stdio.h> #include<algorithm> using namespace std; int main() { int T ; int a[1005]; scanf("%d",&T); while(T--) { int n,i; scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&a[i]); sort(a,a+n); int k=n-1; int sum=0; while(k>=0) { if(k>=3) { int t1 = a[0] + 2*a[1] + a[k]; int t2 = 2*a[0] + a[k] + a[k-1]; sum+=min(t1,t2); } else if(k==2) { sum+=a[1]+a[2]; } else { sum+=a[k]; } k-=2; } printf("%d\n",sum); } return 0; }
相关文章推荐
- Android: INSTALL_FAILED_UPDATE_INCOMPATIBLE错误解决措施
- AndroidBLE--Measuring distance(测量距离)
- eclipse启动tomcat无法访问
- Java读取WEB-INF下XML文件并进行解析
- 将Unity地形以Wavefront Obj格式导出
- Eclipse下快速打开本地文件插件Open Explorer
- Mansory 基本用法
- JQuery中ajax错误处理之页面跳转
- JAVA的IO操作(三)
- codeforces 630H. Benches
- **JAVASCRIPT** DOM对象三
- ext radio 获取值
- glassfish web项目 热部署
- 数据结构学习笔记(二)线性表及其C++实现
- div
- Spring框架的搭建
- 深入理解Java对象序列化
- thinkphp-ajax异步验证之ajaxReturn的使用
- 手机H5自适应布局
- SQL Server 怎样使用SQL输出建表语句