poj 1700 Crossing River C++/Java
http://poj.org/problem?id=1700
题目大意:
有n个人要过坐船过河,每一个人划船有个时间a[i],每次最多两个人坐一条船过河。且过河时间为两个人中速度慢的,求n个人过河的最短时间。
思路:
贪心。
对于每次过河的,有两种情况:
//最快和最慢过去,然后最快回来。在和次慢过去。最快回来
int action1=a[i-1] + a[0] + a[i-2] +a[0];
//最快和次慢过去,然后最快回来,在次慢和最慢过去,次慢回来
int action2=a[1] +a[0] + a[i-1] +a[1];
每次取最优就可以。
#include<cstdio>
#include<algorithm>
using namespace std;
const int MAXN=1024;
int a[MAXN];
int main()
{
int T;
scanf("%d",&T);
while((T--)!=0)
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]); sort(a,a+n); int i;
int ans=0;
for(i=n;i>=4;i-=2)
{
//最快和最慢过去,然后最快回来,在和次慢过去,最快回来
int action1=a[i-1] + a[0] + a[i-2] +a[0]; //最快和次慢过去,然后最快回来,在次慢和最慢过去。次慢回来
int action2=a[1] +a[0] + a[i-1] +a[1];
ans=ans+ ( (action1 < action2 )? action1:action2);
}
if(i==3)
ans+= a[0]+a[1]+a[2];
if(i==2)
ans+=a[1];
if(i==1)
ans+=a[0];
printf("%d\n",ans);
}
return 0;
}
import java.util.Arrays;
import java.util.Scanner; public class Main { public static int[] a=new int[1024]; public static void main(String[] args) {
int T;
Scanner in=new Scanner(System.in);
T=in.nextInt();
while((T--)!=0)
{
int n=in.nextInt();
for(int i=0;i<n;i++)
a[i]=in.nextInt(); Arrays.sort(a,0,n); int i;
int ans=0;
for(i=n;i>=4;i-=2)
{
//最快和最慢过去,然后最快回来,在和次慢过去。最快回来
int action1=a[i-1] + a[0] + a[i-2] +a[0]; //最快和次慢过去。然后最快回来,在次慢和最慢过去,次慢回来
int action2=a[1] +a[0] + a[i-1] +a[1];
ans=ans+ ( (action1 < action2 )? action1:action2);
}
if(i==3)
ans+= a[0]+a[1]+a[2];
if(i==2)
ans+=a[1];
if(i==1)
ans+=a[0];
System.out.println(ans);
} } }
poj 1700 Crossing River C++/Java的更多相关文章
- POJ 1700 Crossing River (贪心)
Crossing River Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9585 Accepted: 3622 Descri ...
- poj 1700 Crossing River 过河问题。贪心
Crossing River Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9887 Accepted: 3737 De ...
- POJ 1700 - Crossing River
Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 13982 Accepted: 5349 Description A gr ...
- 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 cross river (数学模拟)
...
- 1700 Crossing River
题目链接: http://poj.org/problem?id=1700 1. 当1个人时: 直接过河 t[0]. 2. 当2个人时: 时间为较慢的那个 t[1]. 3. 当3个人时: 时间为 t[0 ...
- Crossing River(1700poj)
Crossing River Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9919 Accepted: 3752 De ...
- Crossing River
Crossing River 题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=26251 题意: N个人希望去过 ...
- poj1700--贪心--Crossing River
Crossing River Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12260 Accepted: 4641 D ...
随机推荐
- Anaconda的使用和包的更新;conda 创建虚拟环境
安装: 官网下好后,直接 sh * 会提示安装路径,选择No的话重新填入安装的路径就可以了: 添加到环境变量: echo 'export PATH="~/anaconda2/bin/$PAT ...
- iOS开发-通讯录有界面
// // ViewController.m // 06-通讯录(有界面) // #import "ViewController.h" #import <AddressB ...
- django中使用POST方法 获取POST数据
在django中获取post数据,首先要规定post发送的数据类型是什么. 1.获取POST中表单键值数据 如果要在django的POST方法中获取表单数据,则在客户端使用JavaScript发送PO ...
- django HttpRequest对象
概述: 服务器接收http请求后,会根据报文创建HttpRequest对象 视图的第一个参数就是HttpRequest对象 django创建的,之后调用视图时传递给视图 属性 path:请求的完整路径 ...
- JavaScript高级 面向对象(12)--引用类型值类型作为参数传递的特性
说明(2017-4-2 18:27:11): 1. 作为函数的参数,就是将函数的数据拷贝一份,传递给函数的定义中的参数. 函数foo()在调用的时候,做了两件事: (1)函数在调用的时候,首先需要将参 ...
- 2. 决策树(Decision Tree)-ID3、C4.5、CART比较
1. 决策树(Decision Tree)-决策树原理 2. 决策树(Decision Tree)-ID3.C4.5.CART比较 1. 前言 上文决策树(Decision Tree)1-决策树原理介 ...
- Eigen教程(2)
整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html Matrix类 在Eigen,所有的矩阵和向量都是Matrix模板类的对象,Vect ...
- VC/Wince 实现仿Win8 Metro风格界面2——页面滑动切换(附效果图)
前几天开始写仿Win8 Metro界面文章,部分网友觉得不错,感谢各位的意见.本来今天一直在折腾Android VLC播放器,没时间写.不过明天休息,所以今天就抽时间先写一下. 言归正传,我们都知道W ...
- 【转】mybatis连接Oracle做增删改查
原文地址:http://blog.csdn.net/liumengcheng/article/details/34422475 入门请看http://blog.csdn.NET/liumengchen ...
- Android学习笔记(38):Handler消息传递处理机制
先说为什么须要Handler: Android的主线程又叫UI线程,用于处理与UI相关的时间.Android仅仅同意在主线程中改动UI组件,当我们在其它线程中须要改动UI界面时.就须要发送消息到主线程 ...