POJ-1700 Crossing River---过河问题(贪心)
题目链接:
https://vjudge.net/problem/POJ-1700
题目大意:
有N个人要渡河,但是只有一艘船,船上每次最多只能载两个人,渡河的速度由两个人中较慢的那个决定,小船来回载人直到所有人都渡河,求最短的渡河时间。
思路:
假设有速度最快的人a、速度次快的人b,速度最慢的人c,速度次慢的人d,把c和d送到终点考虑两种策略:
1、 a和b出发,a回来,c和d出发,b回来
2、 a和c出发,a回来,a和d出发,a回来
只需要比较这两种策略的快慢,每次选择较快的策略,当起点的人数少于4时直接处理,即可得出结果。
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<set>
#include<cmath>
using namespace std;
const int maxn = 1e4 + ;
typedef long long ll;
int T, n, m;
int a[maxn];
int main()
{
cin >> T;
while(T--)
{
cin >> n;
for(int i = ; i < n; i++)
{
cin >> a[i];
}
sort(a, a + n);
int i = n - ;
int ans = ;
for(; i >= ; i -= )
{
//策略一:最快的和次快的先过河(时间a[1]),然后最快的回来送灯(a[0]),最慢的和次慢的过河a[i],然后次快的回来送灯a[1];
int time1 = a[] + a[] + a[i] + a[];
//策略二:由最快的和最慢的过河(时间a[i]),然后最快的回来送灯(a[0]),次慢的和最慢的过河a[i-1],然后最快的回来送灯a[0];
int time2 = a[i] + a[] +a[i - ] + a[];
ans += min(time1, time2);
}
if(i == )ans += a[] + a[] + a[];
else if(i == )ans += a[];
else ans += a[];
cout<<ans<<endl;
}
return ;
}
进阶版:传送门
POJ-1700 Crossing River---过河问题(贪心)的更多相关文章
- poj 1700 Crossing River 过河问题。贪心
		Crossing River Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9887 Accepted: 3737 De ... 
- POJ 1700 Crossing River (贪心)
		Crossing River Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9585 Accepted: 3622 Descri ... 
- ACM学习历程——POJ 1700 Crossing River(贪心)
		Description A group of N people wishes to go across a river with only one boat, which can at most ca ... 
- poj 1700 Crossing River C++/Java
		http://poj.org/problem?id=1700 题目大意: 有n个人要过坐船过河,每一个人划船有个时间a[i],每次最多两个人坐一条船过河.且过河时间为两个人中速度慢的,求n个人过河的最 ... 
- POJ 1700 - Crossing River
		Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13982 Accepted: 5349 Description A gr ... 
- POJ 1700 cross river (数学模拟)
		 ... 
- POJ1700:Crossing River(过河问题)
		POJ1700 题目链接:http://poj.org/problem?id=1700 Time Limit:1000MS Memory Limit:10000KB 64bit IO ... 
- 1700 Crossing River
		题目链接: http://poj.org/problem?id=1700 1. 当1个人时: 直接过河 t[0]. 2. 当2个人时: 时间为较慢的那个 t[1]. 3. 当3个人时: 时间为 t[0 ... 
- POJ 1700 经典过河问题(贪心)
		POJ题目链接:http://poj.org/problem?id=1700 N个人过河,船每次最多只能坐两个人,船载每个人过河的所需时间不同,问最快的过河时间. 思路: 当n=1,2,3时所需要的最 ... 
- Crossing River(1700poj)
		Crossing River Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9919 Accepted: 3752 De ... 
随机推荐
- 【重要】ionic和Angular的安装步骤
			首先搭建好npm和node环境的最新版本安装:: 一:开始安装ionic: 1. npm install -g ionic(全局安装ionic) 2. ionic start 新建的项目名称 +模板样 ... 
- mybatis动态insert,update
			1. 动态update UPDATE ui.user_question_section_xref <set> reviewer = #{0}, score = #{1} , last_up ... 
- Spring Boot 1.4测试的改进
			对Pivotal团队来说,工作上的好事情是他们拥有一个被叫做Pivotal Labs的灵活发展部门,拥有Labs团队的Lean 和 XP程序设计方法学的强大支持,例如结对编程和测试驱动开发.他们对于测 ... 
- Cxf 自动生成客户端服务端代码
			第一步: 下载apache-cxf安装包.并安装. 第二步: 配置cxf的环境变量. CXF_HOME = "CXF安装路径". 例如:F:\apache-cxf-2.1.2 在P ... 
- JS获得一个对象的所有属性和方法
			function displayProp(obj){ var names=""; for(var name in obj){ names+=name+": "+ ... 
- java多线程的(一)-之java线程的使用
			一.摘要 每天都和电脑打交道,也相信大家使用过资源管理器杀掉过进程.而windows本身就是多进程的操作系统 在这里我们理解两组基本概念: 1.进程和线程的区别???? 2.并行与并发的区别???? ... 
- 福州大学W班-团队作业-随堂小测(同学录)成绩
			作业链接 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/1246 作业要求 1.题目 即编写一个能够记 ... 
- 福州大学软工1715|W班-启航
			新的一学期即将开启,而在仅剩的几天的时间内,我将为接下来的软工实践助教事宜忙碌起来.要学习的东西很多,要关注的东西也很多. 虽然我现在还在茫然阶段,虽然我对<构建之法>还不太熟悉,但是,我 ... 
- Beta冲刺随笔集合
			Beta冲刺随笔集合 项目Beta预备 Beta冲刺第一天 Beta冲刺第二天 Beta冲刺第三天 Beta冲刺第四天 Beta冲刺第五天 Beta冲刺第六天 Beta冲刺第七天 用户调查报告 Bet ... 
- xcode进行代码覆盖率测试
			去年写的文章,搬到cnblog 本文所述的方法只对xcode5做过测试,xcode6是否可行尚未可知. 配置编译选项 首先请参考苹果官方的文档Configuring Xcode for Code Co ... 
