题意:

一个人要从如果干个地方拿货,每个地方的货物是有存在时间的,到了某个时间之后就会消失。

按照位置从左到右给出货物的位置以及生存时间,这个人选择一个最优的位置出发,问拿完货物的最少时间。

思路:

首先确定最优位置就是生存时间最少的货物的位置。

区间dp,dp[i][j][0]和dp[i][j][1]分别表示取完i到j这个区间的所有货物之后在左边和在右边的最少时间。

转移看具体代码。

min这个函数貌似非常耗时,t了5发define了一个mi就过了。

代码:

 #include <stdio.h>
#include <string.h>
#include <algorithm>
#define mi(a,b) (a) >= (b) ? (b) : (a)
using namespace std;
const int N = 1e4 + ;
const int inf = 0x3f3f3f3f;
int dp[N][N][]; struct node
{
int p,d;
node(){};
node(int x,int y):p(x),d(y){};
}a[N];
int main()
{
int n;
while (scanf("%d",&n) == )
{
memset(dp,inf,sizeof(dp));
for (int i = ;i <= n;i++)
{
scanf("%d%d",&a[i].p,&a[i].d);
}
int k = ;
for (int i = ;i <= n;i++)
{
if (a[i].d < a[k].d)
{
k = i;
}
}
dp[k][k][] = dp[k][k][] = ;
for (int i = k;i >= ;i--)
{
for (int j = k;j <= n;j++)
{
if (i == j) continue;
int &x = dp[i][j][];
int &y = dp[i][j][];
x = mi(x,a[i+].p - a[i].p + dp[i+][j][]);
x = mi(x,a[j].p - a[i].p + dp[i+][j][]);
y = mi(a[j].p - a[j-].p + dp[i][j-][],y);
y = mi(y,a[j].p - a[i].p + dp[i][j-][]);
if (x >= a[i].d) x = inf;
if (y >= a[j].d) y = inf;
}
}
int ans = min(dp[][n][],dp[][n][]);
if (ans == inf) printf("No solution\n");
else printf("%d\n",ans);
}
return ;
}
/*
5
1 3 3 1 5 8
8 19 10 15
5 1 5 2 1 3 4 4 2 5 3
*/

uva 1632 Alibaba的更多相关文章

  1. UVA - 1632 Alibaba 区间dp

    题意:给定n个点,其中第i个点的坐标是,且它会在秒后消失.Alibaba可以从任意位置出发,求访问完所有点的最短时间.无解输出No solution. 思路:表示访问完区间后停留在i点的最短时间,表示 ...

  2. UVA - 1632 Alibaba (区间dp+常数优化)

    题目链接 设$dp[l][r][p]$为走完区间$[l,r]$,在端点$p$时所需的最短时间($p=0$代表在左端点,$p=1$代表在右端点) 根据题意显然有状态转移方程$\left\{\begin{ ...

  3. 【Uva 1632】Alibaba

    [Link]: [Description] 直线上有n(n≤10000)个点,其中第i个点的坐标是xi,且它会在di秒之后消失.Alibaba 可以从任意位置出发,求访问完所有点的最短时间.无解输出N ...

  4. UVa 1632 阿里巴巴(区间DP)

    https://vjudge.net/problem/UVA-1632 题意: 直线上有n个点,其中第i个点的坐标是xi,且它会在di秒之后消失.Alibaba可以从任意位置出发,求访问完所有点的最短 ...

  5. UVA - 10723 Alibaba (dp)

    给你两个长度不超过30的字符串序列,让你找到一个最短的字符串,使得给定的两个字符串均是它的子序列(不一定连续),求出最短长度以及符合条件的解的个数. 定义状态(a,b,c)为当前字符串长度为a,其中包 ...

  6. ZOJ 3469 Food Delivery(区间DP)

    https://vjudge.net/problem/ZOJ-3469 题意:在一条直线上有一个餐厅和n个订餐的人,每个人都有随时间上升的不满意值,从餐厅出发,计算出送完时最小的不满意值总和. 思路: ...

  7. 2018 Spring Single Training B (uva 572,HihoCoder 1632,POJ 2387,POJ 2236,UVA 10054,HDU 2141)

    这场比赛可以说是灰常的水了,涨信心场?? 今下午义务劳动,去拿着锄头发了将近一小时呆,发现自己实在是干不了什么,就跑到实验室打比赛了~ 之前的比赛补题补了这么久连一场完整的都没补完,结果这场比完后一小 ...

  8. uva 1354 Mobile Computing ——yhx

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5

  9. UVA 10564 Paths through the Hourglass[DP 打印]

    UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...

随机推荐

  1. Struts2验证框架_xml验证失败

    测试Struts2验证框架-->XML验证   启动tomcat后网页登录失败 Employee-validation.xml文件头如下: <!DOCTYPE validators PUB ...

  2. springboot注入properties配置到javabean

    一.再application.properties中添加 二. @Value("${field}")在字段上面加个注解

  3. vue脚手架 构建豆瓣App 第一天

    课堂笔记: 项目结构分析: 项目入口:index.html(div#app) 全局vue组件:App.vue(template:div#app) 通过相同id的div,index.html与Appvu ...

  4. 如何使用CryptoJS配合Java进行AES加密和解密

    注意 1. PKCS5Padding和PKCS7Padding是一样的 2. 加密时使用的key和iv要转换成base64格式 一.前端 1.函数 function encrypt (msg, key ...

  5. wps去广告

    彻底解决WPS弹出热点广告.WPS购物图标的办法 方法一:(一定有效) https://www.cnblogs.com/ytaozhao/p/5654149.html 一直用WPS,但一直有一个问题迟 ...

  6. (4.1)mysql备份还原——mysql常见故障

    (4.1)mysql备份还原——mysql常见故障 1.常见故障类型 在数据库环境中,常见故障类型: 语句失败,用户进程失败,用户错误 实例失败,介质故障,网络故障 其中最严重的故障主要是用户错误和介 ...

  7. lsof 命令

    [root@localhost ~]# lsof COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME init root cwd DIR , / in ...

  8. 30个redis.conf 配置项说明

    redis.conf 配置项说明如下: 1. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程 daemonize no 2. 当Redis以守护进程方式运行时,R ...

  9. Cookie和Session的区别?

    1.Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端.      2.Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session ...

  10. 010-docker-安装-elasticsearch:5.4.3

    1.搜索镜像 docker search elasticsearch 2.拉取合适镜像 选择合适tag:https://hub.docker.com/ docker pull elasticsearc ...