POJ 1700

POJ 1700

题意

n个人要过河,一次只能同时两个人过河,两个人过河的时间取决于慢的一个。求最快的过河的时间

思路

先对过河速度进行升序排序。

然后分两种情况:

  1. 最快的和最慢的先过去,然后由最快的一个人划回来,再由最快的次慢的,再由最快的划回来.
  2. 最快的和次快的先划过去,然后由最快的先划回来,再由最慢的和次慢的过去,最后由次快的划回来。
    通过两种情况把最慢的和次慢的都送过河里,最快的和次快的都没过河。然后开始下一次迭代。

每一次选择最优解,即贪心算法。

#include <iostream>
#include <algorithm>
using namespace std;

int main(){
    int m,n,t[1001],i,sum;
    cin>>m;
    while(m--){
        cin>>n;
        sum = 0;
        for(i=0;i<n;i++){
            cin>>t[i];
        }
        sort(t,t+n);
        for(i = n-1;i>2;i -= 2){
            if(t[0]+2*t[1]+t[i]>2*t[0]+t[i-1]+t[i])
                sum += 2 * t[0] + t[i-1]+t[i];
            else
                sum +=t[0]+2*t[1]+t[i];
            if(i == 2) sum += t[0]+t[1]+t[2];
            else if(i == 1) sum +=t[1];
            else sum += t[0];
            cout<<sum<<endl;
        }
    }
    return 0;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • POJ 1700 题意 n个人要过河,一次只能同时两个人过河,两个人过河的时间取决于慢的一个。求最快的过河的时间 ...
    vanadia阅读 2,962评论 0 0
  • 关注全球妈妈育儿指南, 每天分享育儿干货,你不关注一下吗? 冬天怎么保护宝宝的皮肤? 冬天的天气会使皮肤变得脆弱。...
    全球妈妈育儿指南阅读 2,435评论 0 0
  • 秋高气爽100天~
    沃雷塔尔阅读 650评论 0 0
  • 夜里有些静悄悄 空气有些宁静 突然的不安 莫名的恐慌 伸手想抓住些什么 却在空气里落了个空 只听见心跳的声音 紧张...
    樱桃城城阅读 1,157评论 0 0