POJ 1700 过河坐船最短时间问题
2016-04-02 21:02
579 查看
这道题如果理解了就不难了,可分为一步步两个永远最快的a[0],a[1]载现存的两个最慢的过河的问题,一种是最快a[0]载现存最慢过去,0再回来,再载次慢,0再回来,时间为2*a[0]+t[p-2]+t[p-1],或者01过去,0回来,34过去(不可能0再载3或者4过去,那就浪费了第一次0载1过去的意义,等于在第一种方案基础上把34载过去又把2载过去2回来,时间为a[0]+2*a[1]+t[p-1],再根据更新的数据,比较大小,继续选定方案.
#include <iostream> #include <algorithm> using namespace std; bool cmp(int a,int b){ return a<b; } int main(){ int cnt,p,i,sum; int *a = new int[1005]; cin>>cnt; while(cnt--){ sum = 0; cin>>p; for(int i = 0;i<p;i++) cin>>a[i]; sort(a,a+p,cmp); for(i=p-1;i>2;i-=2){ if(a[0]+2*a[1]+a[i]>2*a[0]+a[i-1]+a[i]) //主要就在这两种坐船的方式,比较2a【1】和a[0]+a[i-1]的时间,由输入数据决定 sum+=2*a[0]+a[i-1]+a[i]; else sum+=a[0]+2*a[1]+a[i]; } if(i==2) sum+=a[0]+a[1]+a[2]; else if(i==1) sum+=a[1]; else sum+=a[0]; cout<<sum<<endl; } delete []a; return 0; }
相关文章推荐
- Linux进阶之bash编程四(内置变量)
- Linux学习之基本概念
- 2016腾讯模拟试题编程第二道
- acdream 1409 Musical 状压DP
- LeetCode题解--4. Median of Two Sorted Arrays
- Linux学习笔记8
- hdoj 夹角有多大(题目已修改,注意读题) 2076 (数学&转换)
- JAVA_基本LDAP操作实例
- js设计模式-门面模式
- JavaScript:对Dom的操作
- This version of the rendering library is more recent than your version of ADT plug-in. Please update
- This version of the rendering library is more recent than your version of ADT plug-in. Please update
- 咩咩咩~原来白羊是这样的!!
- 苹果开发工具:Xcode和Interface Builder
- dubbo管理控制台
- ssh 证书方式远程登陆linux主机
- IOS 使用Interface Builder开发界面入门与技巧
- 0402第五周学习进度条
- Java 内存区域和GC机制(上)
- js笔记(9)之定时器&&数字时钟&&延时提示框