NOJ1587 &&小学奥数题 多人过桥问题
来源:互联网 发布:ppt数据分析图表对比 编辑:程序博客网 时间:2024/05/01 22:45
2014/7/20
我是菜比系列
打不过小学生。
链接:http://acm.nbut.edu.cn/Problem/view.xhtml?id=1587
题意: 晚上有N个人要过桥他们只有1个手电筒,而且那座桥一次只能容纳两个人同时过去,超过两个人的话,桥就会塌了。
而且每个人过桥所用的时间也不相同。如果没有手电筒,摸着黑去过桥也会不小心掉下去的。所以快的那个人要等着慢的那个人,而且当两个人拿着手电筒到桥的另一端时,那边的人必须要有一个人拿着手电筒回来。求所有人过完桥用时间最短。。。
记得当初小学的时候就给了一组数据,然后我们在那边猜最少的时间。
现在丧心病狂的hungar竟然出成题目来虐我了....这就算我是彩笔也不能忍。所以果断和这道题同归于尽了。。
#include<stdio.h>#include<string.h>#include<cmath> #include<algorithm>#include<iostream>#include<queue>#include<stack>#include<map>#include<climits>#include<vector>using namespace std;#define f(x,y,i) for(int i = x;i < y; i++)#define F(x,y,i) for(int i = x; i <= y; i++)#define lson pos<<1,l,mid#define rson pos<<1|1,mid+1,r#define sc(n) scanf("%d",&n)#define pr(n) printf("%d\n",n)#define met(n,m) memset(n, m, sizeof(n)) const int N=1050;int s[N];int main(){ int n ; while(~scanf("%d",&n)) { f(0,n,i)sc(s[i]); sort(s,s+n); int sum = 0; int temp =0 ; int cnt=0; if(n==1)sum=s[0]; else if(n%2==0) { sum+=s[1]; for(int i= n-1; i> 1;i-=2) { if(2*s[0]+s[i]+s[i-1] >s[0]+2*s[1] +s[i]) { //printf("%d\n",s[0]+2*s[1] +s[i]); sum+=s[0]+2*s[1] +s[i]; } else sum+=2*s[0]+s[i]+s[i-1]; } } else { sum+=s[1]; for(int i= n-1; i> 2;i-=2) { if(2*s[0]+s[i]+s[i-1] >s[0]+2*s[1] +s[i]) { sum+=s[0]+2*s[1] +s[i]; } else sum+=2*s[0]+s[i]+s[i-1]; } sum+=s[0]+s[2]; } printf("%d\n",sum); }return 0;}
0 0
- NOJ1587 &&小学奥数题 多人过桥问题
- 四人过桥问题
- 四人过桥问题
- 【逻辑】四人过桥问题
- 师徒四人过桥问题
- 小学奥数题--饮料问题
- 过桥问题
- 过桥问题
- 过桥问题?
- 过桥问题
- 过桥问题
- 过桥问题
- 过桥问题
- 过桥问题
- 过桥问题
- 过桥问题
- 过桥问题
- 过桥问题
- 类加载器学习
- 对摄像头采集的图像做hough变换。
- 一个无聊下午的无聊感触,我们都应该具备三个学习态度
- LeetCode :: Binary Tree Zigzag Level Order Traversal [tree, BFS]
- 11.3布局管理器补充 GridLayout
- NOJ1587 &&小学奥数题 多人过桥问题
- 华为内部推荐,比惨大会 (转载)
- 关于linux中的延时函数
- OCP 1Z0 053 172
- CSS中margin边界叠加问题及解决方案
- 11.4 AWT常用组件
- java中构造方法和普通方法的区别,以及和类的联系
- 如何下载dlx
- HDU 1003 MAX SUM java 实现