UVA 10037 Bridge (基础DP)
题意:
过河模型:有n个人要渡河,每个人渡河所耗时可能不同,只有1只船且只能2人/船,船速取决于速度慢的人。问最少耗时多少才能都渡完河?
思路:
n<2的情况比较简单。
考虑n>2的情况,第一次肯定是两个耗时少的先过去。接下来有两种渡河方式,有可能是{a回,另外2人去,b回,a和b去},也可能是{a回,a和另一人去}。也就是说a和b的协作可以送走其他2个人,或者是a自己当船夫,送走另外一个人。这样子就有两种决策啦。
先将他们排个序(升序),然后a和b先过去。如果还有人没有过河,若left>=2时,可以选择第一种渡河方式,也可以选择第二种。当left==1就只能选择第二种了。然后转移行了。dp[i]表示送走[1->i]的所有人的花费。
#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <map>
#include <algorithm>
#include <vector>
#include <iostream>
#define pii pair<int,int>
#define INF 0x7f7f7f7f
#define LL unsigned long long
using namespace std;
const double PI = acos(-1.0);
const int N=;
int dp[N], path[N];
deque<int> que;
vector<int> vect,ans[N];
int cal(int n)
{
sort(vect.begin(), vect.end()); int a=vect[];
if(n==)
{
printf("%d\n", a );
printf("%d\n", a );
return ;
}
int b=vect[];
if( n== )
{
printf("%d\n", b );
printf("%d %d\n", a, b );
return ;
}
//DP******************
dp[]=b;
path[]=;
for(int i=; i<vect.size(); i++)
{
int t1=a+vect[i];
if(dp[i]>dp[i-]+t1) //送1个
{
dp[i]= dp[i-]+t1 ;
path[i]=;
} if( i+==vect.size() ) continue; //最后1个了
int t2=a+b*+vect[i+];
if(dp[i+]>dp[i-]+t2 ) //送2个
{
dp[i+]=dp[i-]+t2;
path[i+]=;
}
}
que.clear(); //寻找路径
int t=n-;
while(t>)
{
if(path[t]==) que.push_front();
else que.push_front();
t-=path[t];
}
//输出*********************************
printf("%d\n", dp[n-]);
printf("%d %d\n", a, b); //第一步必定是a和b先过去
que.pop_front();
int cnt=;
while(!que.empty())
{
t=que.front(); que.pop_front();
cnt+=t;
if(t==)
{
printf("%d\n", a);
printf("%d %d\n", a, vect[cnt]);
}
if(t==)
{
printf("%d\n", a);
printf("%d %d\n", vect[cnt-], vect[cnt]);
printf("%d\n", b);
printf("%d %d\n", a, b);
}
}
} int main()
{
freopen("input.txt", "r", stdin);
int t, n, a;
cin>>t;
while(t--)
{
vect.clear();
for(int i=; i<N; i++) ans[i].clear();
memset(dp, 0x7f, sizeof(dp));
memset(path, , sizeof(path)); scanf("%d",&n);
for(int i=; i<=n; i++)
{
scanf("%d", &a);
vect.push_back(a);
}
cal(n);
if(t) puts("");
}
}
AC代码
UVA 10037 Bridge (基础DP)的更多相关文章
- UVa 10037 - Bridge
题目大意 在一个晚上有N个人过河,他们有一个手电筒,需要有手电筒才能过河,每次最多两个人同时过河,每次过河时间等于速度最慢的那个人的过河时间,让所有人全部过河,花费的时间最少是多少? 分析 如果只有一 ...
- 训练指南 UVA - 10917(最短路Dijkstra + 基础DP)
layout: post title: 训练指南 UVA - 10917(最短路Dijkstra + 基础DP) author: "luowentaoaa" catalog: tr ...
- 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP)
layout: post title: 训练指南 UVA - 11324(双连通分量 + 缩点+ 基础DP) author: "luowentaoaa" catalog: true ...
- uva 1356 Bridge ( 辛普森积分 )
uva 1356 Bridge ( 辛普森积分 ) 不要问我辛普森怎么来的,其实我也不知道... #include<stdio.h> #include<math.h> #inc ...
- 基础dp
队友的建议,让我去学一学kuangbin的基础dp,在这里小小的整理总结一下吧. 首先我感觉自己还远远不够称为一个dp选手,一是这些题目还远不够,二是定义状态的经验不足.不过这些题目让我在一定程度上加 ...
- UVA - 1347 Tour(DP + 双调旅行商问题)
题意:给出按照x坐标排序的n个点,让我们求出从最左端点到最右短点然后再回来,并且经过所有点且只经过一次的最短路径. 分析:这个题目刘汝佳的算法书上也有详解(就在基础dp那一段),具体思路如下:按照题目 ...
- 基础DP(初级版)
本文主要内容为基础DP,内容来源为<算法导论>,总结不易,转载请注明出处. 后续会更新出kuanbin关于基础DP的题目...... 动态规划: 动态规划用于子问题重叠的情况,即不同的子问 ...
- hdu 5586 Sum 基础dp
Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Problem Desc ...
- UVA.674 Coin Change (DP 完全背包)
UVA.674 Coin Change (DP) 题意分析 有5种硬币, 面值分别为1.5.10.25.50,现在给出金额,问可以用多少种方式组成该面值. 每种硬币的数量是无限的.典型完全背包. 状态 ...
随机推荐
- MAF框架的使用限制
虽然MAF实现了插件式开发,动态热插拨,AppDomain隔离等诸多优点,但是正因为它复杂的功能机制也带来了很多其它方面的使用限制,下面列出官方给出的MAF框架的使用限制. 1) 在应用主程序显示的插 ...
- K-S Test
K-S test, test for the equality of continuous, one-dimensional probability distribution that can be ...
- 《SpringBoot揭秘 快速构建微服务体系》读后感(二)
最简单的springBoot应用 package com.louis.test; import org.springframework.boot.SpringApplication; import o ...
- IDEA上使用github上传代码
这里的origin是表示我创建一个名为origin的仓库吗? 早已经存在了,我该怎么删除这个wenda呢? 将它修改为wenda1,如下: 点击项目,右击: 再点击项目,右击,选择commit: 问题 ...
- 搭建 Keras
首先安装ipython ipython安装完成以后出现如下界面 然后安装theano 中途安装因为网络不好,造成超时而停止安装或者停滞不前,则按下Ctrl+C,停止此操作,或者关掉Anaconda P ...
- SCUT - 299 - Kaildls的数组划分 - dp - 高精
https://scut.online/p/299 \(dp[i][k]\) 为前 \(i\) 个数分 \(k\) 组的最大值,那么 $dp[i][k]=max_{p=1}^{i-1}{dp[p][k ...
- PHP中GD库是做什么用的? PHP GD库介绍11111111
什么是gd库? gd库是php处理图形的扩展库,gd库提供了一系列用来处理图片的API,使用GD库可以处理图片,或者生成图片. 在网站上GD库通常用来生成缩略图或者用来对图片加水印或者对网站数据 ...
- c# 库间关系
- 计算机视觉(CV)前沿国际国内期刊与会议
计算机视觉(CV)前沿国际国内期刊与会议1.国际会议 2.国际期刊 3.国内期刊 4.神经网络 5.CV 6.数字图象 7.教育资源,大学 8.常见问题 1. 国际会议现在,国际上计算机视觉方面的三大 ...
- 51nod1110(xjb)
题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1110 题意:中文题诶- 思路:可以将在 xi 位置,权值为 w ...