nyoj 47 过河 过河问题 【贪心】
来源:互联网 发布:如何优化win7开机速度 编辑:程序博客网 时间:2024/05/01 05:13
经典贪心;
两种方案:一:让最快的和次最快的先过去,最快的回来,然后最慢的和次最慢的过去,次最快的回来a[0]+a[1]+a[1]+a[n-1]
二:最快的和最慢的过去,最快的回来,最快的和当前最慢的过去,最快的回来。a[0]+a[n-1]+a[0]+a[n-2]
每次取最优解。
注意:最后剩余没过的人小于等于3的时候,要特殊判断。
代码:
#include <cstdio>#include <cstring>#include <algorithm>#define INF 0x3f3f3f3fusing std::sort;int s[1005], ans, n;void solve(){ans = 0;int st = 0, en = n, len = 0;while(en > 3){int temp1 = s[en-1]+2*s[1]+s[0];int temp2 = 2*s[0]+s[en-1]+s[en-2];ans += temp1<temp2 ?temp1:temp2;en -= 2;}if(en == 3) ans += s[0]+s[2];ans += s[1];printf("%d\n", ans);}int main(){int t, i, j;scanf("%d", &t);while(t --){scanf("%d", &n);for(i = 0; i < n; i ++) scanf("%d", &s[i]);sort(s, s+n);if(n<3) printf("%d\n", s[n-1]);else solve();}return 0;}
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=47
0 0
- nyoj 47 过河 过河问题 【贪心】
- NYOJ 47 过河问题 (贪心)
- NYOJ 47 过河问题 (贪心)
- nyoj 47 过河问题 【贪心】
- nyoj 47 过河问题 贪心
- NYOJ 47-过河问题(贪心)
- 过河问题 NYOJ 贪心
- 贪心-nyoj-过河问题
- nyoj 过河问题 贪心
- NYOJ-47 过河问题(贪心)
- NYOJ 47 过河问题 (贪心)
- NYOJ 题目47 过河问题 (贪心)
- POJ-1700 &&NYOJ 47 过河问题【贪心】
- nyoj 47 过河问题(贪心)
- nyoj 47 过河问题(贪心)
- NYOJ 47 过河问题(贪心)
- nyoj 47 过河问题
- NYOJ 47-过河问题
- 进击的C++
- js+flash幻灯片
- JS基础——闭包
- hdoj 1846 Brave Game博弈论问题
- 学习Python参考博文链接
- nyoj 47 过河 过河问题 【贪心】
- 拓扑学学习(一)
- CP5 多维数组
- OpenGL调试头文件缺失
- Surrounded Regions
- HDU2586 How far away ?
- MFC单文档中添加类似OnCommand的Virtual函数
- HDU 1559 最大子矩阵 (DP)
- SD卡初始化以及命令详解