BridgeOverARoughRiver(POJ-3404)【AdHoc】
题目链接:https://vjudge.net/problem/POJ-3404
题意:n个极限速度不同的人要过桥,一开始所有人在桥的一边,每次最多两个人同时过桥,过桥时需要用一把火炬并且全场只有一把火炬,问所有人到达桥的另外一边所需最短时间。
思路:凭直觉很多人都会立刻想到每次都让最快的人在桥两边来回陪同其他人过桥,但是当遇到类似于1 2 10 11,这种,最优解为 1 2,1,10 11,2,1 2,并不是1 2,1,1 10,1,1 11.
设a最快,b次快,d次慢,c最慢,每次有两种策略可供选择(剩余人数大于等于4,其他情况很容易计算):
1.a b,a,c d,b,
2.a d,a,a c,a.
每次对两种方案进行比较即可。
代码如下:
#include<cstdio>
#include<list>
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
list<int> lt;
int n,val[];
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&val[i]);
}
sort(val+,val++n);
for(int i=;i<=n;i++)
lt.push_back(val[i]);
list<int>::iterator it;
int ans=;
while(lt.size()>){
if(lt.size()>=){
int a=*lt.begin(),b,c,d;
it=lt.begin();it++;
b=*it;
it=lt.end();
it--;d=*it;
it--;c=*it;
int t1=b+a+d+b,t2=d+a+c+a;
ans+=min(t1,t2);
it=lt.end();
it--;lt.erase(it);
it=lt.end();it--;lt.erase(it);
}
else if(lt.size()==){
int a,b,c;
it=lt.begin();
a=*it;it++;
b=*it;it++;
c=*it;
int t=b+a+c;
ans+=t;
break;
}
else if(lt.size()==){
it=lt.begin();it++;
ans+=*it;break;
}
else {
ans+=*lt.begin();
break;
}
}
printf("%d",ans);
return ;
}
BridgeOverARoughRiver(POJ-3404)【AdHoc】的更多相关文章
- 【简●解】POJ 1845 【Sumdiv】
POJ 1845 [Sumdiv] [题目大意] 给定\(A\)和\(B\),求\(A^B\)的所有约数之和,对\(9901\)取模. (对于全部数据,\(0<= A <= B <= ...
- POJ 2154 【POLYA】【欧拉】
前记: TM终于决定以后干啥了.这几天睡的有点多.困饿交加之间喝了好多水.可能是灌脑了. 切记两件事: 1.安心当单身狗 2.顺心码代码 题意: 给你N种颜色的珠子,串一串长度问N的项链,要求旋转之后 ...
- POJ 3230 【DP】
题意: 某货旅行,在n个城市呆m天. 给出从第i个城市到第j个城市的路费,或者留在某个城市的生活费. 给出在第i天在第j个城市的收益. 可以在城市之间任意穿梭逗留没有其他特殊要求. 求收益最大是多少. ...
- POJ 3187【permutation】
POJ 3187 给定N值,从而确定了数据的范围及长度,暴力枚举数列,接下来类似杨辉三角的递推计算.注permutation从递增有序数列开始枚举,枚举到符合sum值时退出即可 #include &l ...
- POJ 2718【permutation】
POJ 2718 问题描述: 给一串数,求划分后一个子集以某种排列构成一个数,余下数以某种排列构成另一个数,求这两个数最小的差,注意0开头的处理. 超时问题:一开始是得到一个数列的组合之后再从中间进行 ...
- Tiling POJ 2506 【大数】
id=2506">http://poj.org/problem?id=2506 Description In how many ways can you tile a 2xn rect ...
- poj 2431 【优先队列】
poj 2431 Description A group of cows grabbed a truck and ventured on an expedition deep into the jun ...
- poj 2385【动态规划】
poj 2385 Apple Catching Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 14007 Accepte ...
- POJ 1286 【POLYA】
题意: 给你三种颜色的珠子,每次给你N,问在旋转,翻转之后视作相同的情况下,能组成多少种不同的项链. 思路: 让我们借这道题拯救一下我对POLYA定理的理解... sigma(m^(gcd(i,n)) ...
随机推荐
- JavaWeb_(Mybatis框架)MyBatis整合Spring框架
MyBatis + Spring整合开发 a)使用Spring容器用单例模式管理Mybatis的sqlSessionFactory:b)使用Spring管理连接池.数据源等:c)将Dao/Mapper ...
- elasticsearch各种服务链接
查看elasticsearch信息http://localhost:9200/ 查看某个索引信息http://localhost:9200/index_name例如:http://localhost: ...
- nodeJS 项目如何运行
nodeJS 项目如何运行 一.总结 一句话总结: nodejs项目根目录中用node xx.js 或是 node xx运行 打开 window的 cmd 命令窗口,使用 cd 命令跳转到 nodeJ ...
- vue实现购物清单列表添加删除
vue实现购物清单列表添加删除 一.总结 一句话总结: 基础的v-model操作,以及数组的添加(push)删除(splice)操作 1.checkbox可以绑定数组,也可以直接绑定值? 绑定数组就是 ...
- PHP之Memcache和Memcached
本篇文章向大家介绍的是PHP中的Memcache和Memcached ,有兴趣的朋友可以看一下 **Memcache介绍:**Memcache是一套分布式缓存系统,分布式就是说可以在多台服务器上同时安 ...
- Flink简介
Flink简介 Flink的核心是一个流式的数据流执行引擎,其针对数据流的分布式计算提供了数据分布,数据通信以及容错机制等功能.基于流执行引擎,Flink提供了诸多更高抽象层的API以方便用户编写分布 ...
- 常见Web攻击及解决方案
DoS和DDoS攻击 DoS(Denial of Service),即拒绝服务,造成远程服务器拒绝服务的行为被称为DoS攻击.其目的是使计算机或网络无法提供正常的服务.最常见的DoS攻击有计算机网络带 ...
- AlarmManager(闹钟服务)
1.Timer类与AlarmManager类区别: 对Timer就是定时器,一般写定时任务的时候 肯定离不开他,但是在Android里,他却有个短板,不太适合那些需要长时间在后台运行的 定时任务,因为 ...
- ubuntu tensorflow cpu faster-rcnn 测试自己训练的模型
(flappbird) luo@luo-All-Series:~/MyFile/tf-faster-rcnn_box$ (flappbird) luo@luo-All-Series:~/MyFile/ ...
- Windows10 64位 安装 Postgresql 数据库
1,下载Postgresql 10.7 版本,下载地址 https://www.enterprisedb.com/downloads/postgres-postgresql-downloads 2 ...