uva 12222 Mountain Road
题意:
有一个单行道,两个方向都有车在等待。给出每个车的方向以及到达的时间以及走完这段路所需要的时间。
为了防止车祸,同向两车通过任一点的时间间隔不得小于10s。
求最后一辆车离开时刻的最小值。
思路:
这题最坑的就是,车可以降低速度。provided it is not slowed down by other cars in front。
分析一下样例2,
4
A 0 100
B 50 100
A 100 1
A 170 100
首先B走,到达时间为150s,之后A1走,到达时间为250s,然后在160s的时候,A2可以出发,可以降低到和A1一直相隔10s的速度,到达时间为260s,也比A1晚10s。
之后A3在170s出发,270s到达,所以花费的总时间是270s。
不难想到的是,整个过程是A先走若干个 -> B走若干个 -> A走若干个。。。。。知道走完。
所以设dp[i][j][0/1]表示走了i辆A,j辆B且A是最后一辆(0),B是最后一辆(1)所花费的最少时间。
根据上面的过程,在dp[i][j][0]的时候,就可以枚举B走了K辆;
在dp[i][j][1]的时候,枚举A走了K辆。
由于同向的车每次相隔必须大于等于10s,所以设前一辆同向的车的出发时间为x,到达时间为y,本辆车实际到达的时间为a,那么出发时间就是b = max(a,x + 10),到达时间就是max(b,y + 10)。
时间复杂度为n^3。数据应该略水。。。。
代码:
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef long long ll;
const int N = ;
ll dp[N][N][];
struct node
{
ll arr,cost;
node(){};
node(int x,int y):arr(x),cost(y){};
}a[N],b[N];
int main()
{
int t;
scanf("%d",&t);
while (t--)
{
int orz;
int n = ,m = ;
scanf("%d",&orz);
for (int i = ;i < orz;i++)
{
char s[];
int x,y;
scanf("%s%d%d",s,&x,&y);
if (s[] == 'A') a[++n] = node(x,y);
else b[++m] = node(x,y);
}
for (int i = ;i <= n;i++)
{
for (int j = ;j <= m;j++) dp[i][j][] = dp[i][j][] = 1e16;
}
dp[][][] = dp[][][] = ;
for (int i = ;i <= n;i++)
{
for (int j = ;j <= m;j++)
{
ll t1 = dp[i][j][],t2 = ;
for (int k = j + ;k <= m;k++)
{
t1 = max(t1,b[k].arr);
t2 = max(t2,t1 + b[k].cost);
dp[i][k][] = min(dp[i][k][],t2);
t1 += ;
t2 += ;
}
t1 = dp[i][j][],t2 = ;
for (int k = i + ;k <= n;k++)
{
t1 = max(t1,a[k].arr);
t2 = max(t2,t1 + a[k].cost);
dp[k][j][] = min(dp[k][j][],t2);
t1 += ;
t2 += ;
}
}
}
printf("%lld\n",min(dp[n][m][],dp[n][m][]));
}
return ;
}
/*
2
4
A 0 60
B 19 10
B 80 20
A 85 100
4
A 0 100
B 50 100
A 100 1
A 170 100
*/
uva 12222 Mountain Road的更多相关文章
- POJ - 3846 Mountain Road 动归
POJ - 3846 Mountain Road 题意:n个人要过桥,有的人从左边来,有的人从右边来,给你他们到达桥一端的时间和过桥所需要的时间,要求相向而行的只能有一人,对于每一个点,不能在10s内 ...
- Mountain Road
题意: n个车,过一条路,有不同的方向,路上不允许同时有两个方向的车,给出每个车的起始时间,方向,和经过路花费的时间,车最小间隔10个时间,求最后一个车通过路的最早的时间. 分析: dp[i][j][ ...
- Soj题目分类
-----------------------------最优化问题------------------------------------- ----------------------常规动态规划 ...
- XML Data Type Methods(一)
XML Data Type Methods(一) /*XML Data Type Methods: 1.The query('XQuery') method retrieves(vt.检索,重新得到) ...
- {POJ}{动态规划}{题目列表}
动态规划与贪心相关: {HDU}{4739}{Zhuge Liang's Mines}{压缩DP} 题意:给定20个点坐标,求最多有多少个不相交(点也不相交)的正方形 思路:背包问题,求出所有的正方形 ...
- gRPC 的route_guide例子
本文的例子代码在: https://github.com/grpc/grpc-go/tree/master/examples/route_guide 功能就类似目前LBS一样,在每个位置上报一些文 ...
- DP 题集 2
关于 DP 的一些题目 String painter 先区间 DP,\(dp[l][r]\) 表示把一个空串涂成 \(t[l,r]\) 这个子串的最小花费.再考虑 \(s\) 字符串,\(f[i]\) ...
- UVA 11883 Repairing a Road(最短路径+暴力枚举)
You live in a small town with R bidirectional roads connecting C crossings and you want to go from c ...
- UVa 11167 Monkeys in the Emei Mountain (最大流)
题意:雪雪是一只猴子.它在每天的 2:00 —— 9:00之间非常渴,所以在这个期间它必须喝掉2个单位的水.它可以多次喝水,只要它喝水的总量是2.它从不多喝,在一小时内他只能喝一个单位的水.所以它喝水 ...
随机推荐
- java kafka 生产者消费者demo
一.修改kafka server.porperties的ip是你本机的ip listeners=PLAINTEXT://192.168.111.130:9092 二.生产者的例子 import o ...
- Idea下载安装
安装 下载 下载地址:http://www.jetbrains.com/idea/#chooseYourEdition,选择付费版的zip格式的下载 安装过程中除了勾选64版本之外其他一路next,直 ...
- 洛谷P4052 [JSOI2007]文本生成器 AC自动机+dp
正解:AC自动机+dp 解题报告: 传送门! 感觉AC自动机套dp的题还挺套路的,,, 一般就先跑遍AC自动机,然后就用dp dp的状态一般都是f[i][j]:有i个字符,是ac自动机上的第j个节点, ...
- es中对mapping的理解
(1)往es里面直接插入数据,es会自动建立索引,同时建立type以及对应的mapping (2)mapping中就自动定义了每个field的数据类型 (3)不同的数据类型(比如说text和date) ...
- windows版本下ELK配置
windows版本的es和kibana相对配置起来很简单,网上已经有很多例子都是正确的,只需按照步骤安装一下即可. 主要logstash,网上说的方案,大都不能配置成功,或者总有一些错误,下面把我自己 ...
- 20170724 Airflow官网资料学习
-- 1 Apache Airflow 文档 AirFlow 对编程人员来讲就是一个平台,用于进行日程安排和监控.但是还在卵化期,严格来说,不是一个完整的成品.
- 怎样打开U盘最安全
为了避免电脑使用U盘时,通过双击,或者右击盘符时,导致把病毒感染至整个电脑,因此使用下面的方法,可使U盘病毒不被激活传播. 在取消了U盘自动运行的情况下(在组策略中一定要关闭自动运行功能,否则只要一插 ...
- 前端框架之Vue(5)-条件渲染
v-if 在字符串模板中,比如 Django Template语法中,我们得像这样写一个条件块: <!-- Handlebars 模板 --> {%if 1%} <h1>Yes ...
- LigerUI子父窗口之间传参问题
在父窗口自定义一个参数,该参数为一个方法,然后在子窗口使用 var dialog = frameElement.dialog; //调用页面的dialog对象(ligerui对象)该对象,取得父窗口定 ...
- cmd项目目录结构以及配置文件的升级编写
一.项目的目录结构: bin:执行文件夹 config:自定义配置文件 lib:公共的模块或者类文件 src:核心业务逻辑代码 二.配置文件的编写 1)config代码如下 from lib.conf ...