题目链接: http://poj.org/problem?id=1700

1. 当1个人时: 直接过河 t[0].

2. 当2个人时: 时间为较慢的那个 t[1].

3. 当3个人时: 时间为 t[0]+t[1]+t[2].

4. 当4个以上的人时, 将t[0] 和 t[1]当作搬运工. 两种方案:

  - 最快和次快的过去, 最快的回来, 最慢和次慢的过去, 次快的回来, 这样就将最慢和次慢的送过去了. 时间: t[0]+2*t[1]+t[i]

  - 最快的依次送最慢和次慢的过去再回来, 时间: 2*t[0]+t[i-1]+t[i]

  以上方案每次就将最慢的和次慢的送过河, 每次送走两个人, 当将其他人送完之后, t[0]和t[1]再过河.

#include <iostream>
#include <algorithm>
using namespace std;
bool comp(int a,int b){
return a<b;
}
int main(){
int m,n,t[],i,sum;
cin>>m;
while(m--){
cin>>n;
sum = ;
for(i=;i<n;++i)
cin>>t[i];
sort(t,t+n,comp);
for(i=n-;i>;i-=){
//把t[0]和t[1]当成搬运工,最后返回到原地
int t1 = t[]+*t[]+t[i];//最快的(即所用时间t[0])和次快的过河,然后最快的将船划回来,再次慢的和最慢的过河,然后次快的将船划回来
int t2 = *t[]+t[i-]+t[i];//最快的和最慢的过河,然后最快的将船划回来,再最快的和次慢的过河,然后最快的将船划回来
sum += t1>t2?t2:t1;
}
if(i==) //3people left
sum += t[]+t[]+t[];
else if(i==) //2 people left
sum += t[];
else // 1 people left
sum += t[];
cout<<sum<<endl;
}
return ;
}


-->

1700 Crossing River的更多相关文章

  1. POJ 1700 Crossing River (贪心)

    Crossing River Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9585 Accepted: 3622 Descri ...

  2. poj 1700 Crossing River 过河问题。贪心

    Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9887   Accepted: 3737 De ...

  3. poj 1700 Crossing River C++/Java

    http://poj.org/problem?id=1700 题目大意: 有n个人要过坐船过河,每一个人划船有个时间a[i],每次最多两个人坐一条船过河.且过河时间为两个人中速度慢的,求n个人过河的最 ...

  4. POJ 1700 - Crossing River

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 13982   Accepted: 5349 Description A gr ...

  5. 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 ...

  6. Crossing River(1700poj)

    Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9919   Accepted: 3752 De ...

  7. Crossing River

    Crossing River 题目链接:http://acm.hust.edu.cn/vjudge/problem/visitOriginUrl.action?id=26251 题意: N个人希望去过 ...

  8. POJ 1700 cross river (数学模拟)

                                                                                                       ...

  9. poj1700--贪心--Crossing River

    Crossing River Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 12260   Accepted: 4641 D ...

随机推荐

  1. Hibernate学习2—Hibernate4 CRUD体验初步

    接着上一节,工程结构: jar包没有变化: 一.HibernateUtil 封装: com.cy.util.HibernateUtil.java: package com.cy.util; impor ...

  2. appium+python自动化34-获取元素属性get_attribute

    获取text # coding:utf-8 from appium import webdriver from time import sleep desired_caps = { 'platform ...

  3. CentOS6.4 上搭建NIS网络信息服务器

    NIS(Network Information Service)网络信息服务,主要功能是提供用户登录信息给客户端主机查询之用,用于企业局域网Linux主机账户的集中管理(非跨平台).NIS服务器在大型 ...

  4. Android:ScrollView和SwipeRefreshLayout高度测量

    今天组里的同事要做一个奇葩的效果,要求在ScrollView里嵌套一个RefreshLayout.类似代码如下: <?xml version="1.0" encoding=& ...

  5. Nginx记录客户端POST过来的具体信息

    vim nginx/config/nginx.config $request_body这个变量值就是POST数据 log_format main '$remote_addr - $remote_use ...

  6. mysql的配置(图解)

    一.配置MySQL数据库 1.解压绿色版mysql,如下图 二.安装服务 1.运行cmd(管理员版本,否则没有权限),如下图 2.运行命令mysqld –install安装服务,如下图: 如果不需要m ...

  7. 多路径路由算法选择(1)——ECMP、WCMP

    不要问为什么,现在的工作转向了网络路由协议的设计. 传统的网络拓朴结构可以形象的表示为树结构,我们称之为“有中心的网络拓扑结构”,简单地认为很多流量请求最终会汇聚到主干网这样的路由中心,才能转发到下一 ...

  8. [Python] WeChat_Robot

    在微信中接入一个聊天机器人 1. WeChat 个人接口itchat 2. 图灵机器人 #-*- coding:utf-8 -*- import itchat import requests apiU ...

  9. Python操作中缓存Redis

    Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

  10. Dijkstra 调度场算法 Python实现 一

    调度场算法(Shunting Yard Algorithm)是一个用于将中缀表达式转换为后缀表达式的经典算法,由 Edsger Wybe Dijkstra 引入,因其操作类似于火车编组场而得名.  — ...