2534 渡河 2013年市队选拔赛广州

2534 渡河

2013年市队选拔赛广州

时间限制: 1 s

空间限制: 128000 KB

题目等级 : 黄金 Gold

题目描述 Description

有N个人需要渡河到对岸,但是只有一条小船,只能乘坐两人,请问怎么能够让他们以最少的时间渡河到对岸呢?

输入描述 Input Description

输入为两行,第一行为渡河的人数N (1<=N<=1000)

第二行为N个正整数,范围是 [1,100],代表他们划船到对岸需要多少分钟

输出描述 Output Description

输出只有一行,代表最短的渡河时间,单位为分钟

样例输入 Sample Input

3

2 3 50

样例输出 Sample Output

55

数据范围及提示 Data Size & Hint

N (1<=N<=1000)

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<algorithm>
 5
 6 using namespace std;
 7
 8 int speed[1001];
 9
10 int main()
11 {
12     int t, n, tmp;
13         scanf("%d", &n);
14         for(int i=0; i<n; i++)
15         {
16             scanf("%d", &speed[i]);
17         }
18         for(int i=0; i<n; i++)
19         {
20             for(int j=i; j<n; j++)
21             {
22                 if(speed[i] > speed[j])
23                 {
24                     tmp = speed[i];
25                     speed[i] = speed[j];
26                     speed[j] = tmp;
27                 }
28             }
29         }
30         // greedy
31         int start = n, ans = 0;
32         while(start)
33         {
34             // start = 1,2,3时直接处理
35             if(start == 1)
36             {
37                 ans  += speed[0];
38                 break;
39             }
40             else if(start == 2)
41             {
42                 ans += speed[1];
43                 break;
44             }
45             else if(start == 3)
46             { // 0,2过河,0回程,0,1过河
47                 ans += speed[2]+speed[0]+speed[1];
48                 break;
49             }
50             // start>3根据策略选择
51             else{
52                 ans += min(speed[1]+speed[0]+speed[start-1]+speed[1], speed[start-1]+2*speed[0]+speed[start-2]);
53                 start -= 2;
54             }
55         }
56         printf("%d\n", ans);
57
58     return 0;
59 }
时间: 2024-10-28 21:14:15

2534 渡河 2013年市队选拔赛广州的相关文章

codevs2011最小距离之和 [2013年省队选拔赛辽宁]

题目网址:http://codevs.cn/problem/2011/ 题目大意:有一个图,每次删一条边(可以重复删),求每次删边之后所有点对的最短距离之和. 看了一眼题目,顿时发现了O(n^4)的暴力解法:每次删边之后跑一次Floyd,然后又看了一眼数据范围,发现n,m<=200--华丽丽的TLE-- 删边--好像不可做--但是如果是加边就好办了.看看能不能把删边转化成加边,于是--正解思路闪现了. 其实这道题的思路就是把要删掉的边全部先删掉,跑一次Floyd,然后倒着加边,用加上的边更新最短

CSU-ACM2014年校队选拔赛指导赛解题报告

•Problem A  CSU 1065                               贪心 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 const int maxn = 1000010; 6 struct Node{ 7 int a,b; 8 bool operator < (const Node& rhs)

BZOJ 3236 AHOI 2013 作业 莫队算法

题目大意:给出一些数,问在一个区间中不同的数值有多少种,和在一个区间中不同的数值有多少个. 思路:由于没有修改,所以就想到了莫队算法.然后我写了5K+的曼哈顿距离最小生成树,然后果断T了.(100s的时限啊,刷status都要刷疯了..,结果最后加了手写读入也没能A).后来果断放弃,写了分块版的莫队算法.84sAC...这题卡的..貌似莫队并不是正解. 其实用分块来写莫队就很简单了.只需要将所有询问的区间排序,左端点所在块作为第一键值,右端点作为第二季键值排序,之后就可以转移了.理论上来时还是曼

2298 石子合并 2008年省队选拔赛山东

题目描述 Description 在一个操场上摆放着一排N堆石子.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石子数记为该次合并的得分. 试设计一个算法,计算出将N堆石子合并成一堆的最小得分. 输入描述 Input Description 第一行是一个数N. 以下N行每行一个数A,表示石子数目. 输出描述 Output Description 共一个数,即N堆石子合并成一堆的最小得分. 样例输入 Sample Input 4 1 1 1 1 样例输出 S

[codevs 2926] 黑白瓷砖(2002年安徽省队选拔赛)

描述 http://codevs.cn/problem/2926/ 题解: Polya定理的应用. 由于第一次做polya定理的题,故要写的详细些. 首先可以从题目中读到三个置换以及一个不动置换: 顺时针旋转120度. 顺时针旋转240度. 左右翻转180度. 旋转0度.(不动置换) 开始我本以为这样就算完成任务,就拿polya定理演算了一遍,结果发现n=2,n=3都不对.后来才明白现在的置换群中不满足封闭性.比如先顺时针旋转再左右翻转后的图形就不包含在内.所以还要增加两个斜向的翻转. 现在可以

中山大学校队选拔赛第一章题1【紧急逃离Emergent escape】----2015年1月26日

一: 题意描述 二:题目分析 本题的大致意思是讲:在给定的一个大圆上挖去很多圆(这些圆有的在大圆里面,有的在大圆外面,有的与圆相加),凡是被圆占据的部分则不能通行. 现在给定两个点,(lifeship和controlling room)如果两者能够到达的话表示能够Escape,否则就只有Die hard. 本题的主要考查图论知识和计算几何方面的知识.首先我们对于这个问题需要建模.我们首先可以把这个大圆看成单独的一个区域.现在的问题就是在整个大圆内找不到一条线可以让lifeship和control

中山大学校队选拔赛第二试题试题3【Compressed suffix array】-------2015年2月8日

一:题目大意 本题通过给定三个数组S0,P,S,其中S0是1到2n的一个排列,P具有2n个整数,且满足: 数组S是把数组S0中所有奇数元素全部删除并将所有偶数元素除以2并按照原来的相对顺序进行排列而得. 现在给定数组S和数组P,我们需要反求数组S0. 二:题目分析 我们通过对数组P的递推式分析可知:当数组S0的元素是偶数时,这个元素所对应的Pi的值一定等于i.当数组S0的元素为奇数时,我们可以知道对应的Pi一定不等于i.那么我们可以先对数组P扫一遍,把存在Pi=i的元素全部填好,然后再对数组P重

【日常学习】【条件最短路dij】POJ1062 昂贵的聘礼(2002年浙江省队选拔赛) 题解

耗时三节课 充分体现出粗心酿成大错这个道理 一开始一直不知道为什么数组越界 原来是minn和ninj写反了 后来又因为杜如函数出为题 反复调试 今后一定要注意 题目还是放上吧: 题目描述 Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低要求.酋长说:"嗯,如果你能够替我弄到大祭司的皮袄,我可以只要8000金币.如果你能够弄来他的水晶球,那么只要5

codeforces739C - Skills &amp;&amp;金中市队儿童节常数赛

http://codeforces.com/problemset/problem/739/C 先上链接 这道题 对于蒟蒻的我来说还是很有难度的 调了很久 对于我的代码 mx2是答案 mx1代表单调 mx2双调 带l,r的代表从哪边开始 剩下的自己加油看吧 不是很长来着 #include<cstdio> #include<cstring> #include<algorithm> #define LL long long using namespace std; const