【题目描述】

    N个人过河,一次过去2个回来一个,给出每个人所需时间,问最小过河时间。

【题目链接】

    http://noi.openjudge.cn/ch0406/702/

【算法】

    一开始想样例是怎么成立的想了半天,因为一开始以为贪心策略就是最小的人陪每个人过去然后回来,这样子的话样例应该是19。样例:4个人,时间分别为:1 2 5 10。最少时间为17。策略是最小和次小先过去,然后最小回来,最大和次大过去,次小回来,然后最小次小再过去结束。然后按这种策略写wa了,没办法。查了一波题解,发现两种策略去最小。。。。晕。因为假设递增的a,b,c,d四个人,两种策略所需时间分别为:2*b+a+d+b和a*2+c+d+b,消去相同项为2*b和a+c,所以每次取两者最小就行了(第二种策略很容易构造出数据: 1 99 100 1000)。当然在剩三个人的情况下,两种策略用时相同都是a+b+c。

【代码】

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 int t,n,i,ans;
 4 int a[1010];
 5 int main()
 6 {
 7     scanf("%d",&t);
 8     while(t--) {
 9         ans=0;
10         scanf("%d",&n);
11         for(i=1;i<=n;i++) scanf("%d",&a[i]);
12         if(n==1) { printf("%d\n",a[1]); continue; }
13         sort(a+1,a+n+1);
14         for(i=n;i>3;i-=2)
15             ans+=min(a[1]+2*a[2]+a[i],a[1]*2+a[i]+a[i-1]);
16         if(n&1) ans+=a[1]+a[2]+a[3];
17         else ans+=a[2];
18         printf("%d\n",ans);
19     }
20     return 0;
21 }

转载于:https://www.cnblogs.com/Willendless/p/9356820.html

702:Crossing River (贪心)相关推荐

  1. 信息学奥赛一本通 1232:Crossing River | OpenJudge NOI 4.6 702:Crossing River

    [题目链接] ybt 1232:Crossing River OpenJudge NOI 4.6 702:Crossing River 一本通里的翻译不够完整,OpenJudge中的英文原题中有对数据 ...

  2. 信息学奥赛第十节 —— 贪心算法(渡河问题POJ 1700 Crossing River + 拦截导弹的系统数量求解)

    复习概念 贪心算法又叫贪婪算法,是指在对问题求解时,总是做出在当前看来是最好的选择.也就是说,贪心算法不从整体最优上加以考虑,它所做出的是在某种意义上的局部最优解. 无后效性:贪心算法不是对所有问题都 ...

  3. 信息学奥赛一本通(1232:Crossing River)

    1232:Crossing River 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 6415     通过数: 2761 [题目描述] 几个人过河,每次过两人一 ...

  4. 贪心算法-crossing river

    /**/ #include <iostream> #include<algorithm> using namespace std; int calc1(int *a,int n ...

  5. Crossing River / 过河问题(贪心)

    描述 几个人划船过河,每次过两人过河后需要一人返回,速度由慢者决定,问过河所需最短时间. 输入描述 输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间(1≤t≤20,1≤n≤1 ...

  6. Crossing River

    [题目描述] 几个人过河,每次过两人一人回,速度由慢者决定,问过河所需最短时间. [输入] 输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间. [输出] 输出t行数据,每行1 ...

  7. 1700 Crossing River

    题目链接: http://poj.org/problem?id=1700 1. 当1个人时: 直接过河 t[0]. 2. 当2个人时: 时间为较慢的那个 t[1]. 3. 当3个人时: 时间为 t[0 ...

  8. Crossing River(信息学奥赛一本通-T1232)

    [题目描述] 几个人过河,每次过两人一人回,速度由慢者决定,问过河所需最短时间. [输入] 输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间. [输出] 输出t行数据,每行1 ...

  9. 1232:Crossing River

    [题目描述] 几个人过河,每次过两人一人回,速度由慢者决定,问过河所需最短时间. [输入] 输入t组数据,每组数据第1行输入n,第2行输入n个数,表示每个人过河的时间. [输出] 输出t行数据,每行1 ...

最新文章

  1. Top 10国际大厂人工智能岗位经典面试题精选
  2. matlab中的rem和mod,matlab的rem()和mod()函数
  3. C#几种访问修饰符理解
  4. Linux下添加普通帐号
  5. easyui数据请求两个url_jQuery Easyui datagrid连续发送两次请求问题
  6. netduino之电源参考电路MC33269DT-5.0G
  7. FreeEIM 来点新知识iOS UIScrollView详解
  8. Java读写Excel之POI超入门(转)
  9. 目录:所以文章的目录
  10. java常用的空对象 null
  11. ICCV 2015 揭开152层神经网络的面纱
  12. win10系统安装提示带有gui的服务器,安装win10提示“由于技术员系统中无接入音频设备,要启动GUI”如何...
  13. 员工新参(北京)社保所需材料
  14. 【论文】(COPRA)Finding overlapping communities in networks by label propagation
  15. adb shell wm 命令使用
  16. JAVA-操作excel模版进行写入
  17. 聊聊最简单的名词:频率
  18. 打响散煤治理的蓝天保卫战 ——民用“洁净型煤+环保炉具”的发展
  19. 在虚拟机VMware中使用手机热点或WIFI设置网络
  20. 3dmip12小时内无法注册_国内用户将无法再注册Steam新账号

热门文章

  1. 2017-2018-2 20179204《网络攻防实践》第八周学习总结
  2. glusterfs4.0.1 mempool 分析笔记
  3. 读书方法(如果努力有用的话,那还要天才干什么!)
  4. 绑定变量窥测(Bind Variable Peeking)
  5. Weblogic部署项目过程中的一些问题
  6. 一个类怎样引用另外一个类的成员变量或方法
  7. emacs org mode 中的标签全参考
  8. 【原创】QT在嵌入式系统中显示中文的方法
  9. 使用 $.grep() 方法
  10. MES系统实施4大关键点,您都知道吗?