uva 1632 Alibaba
题意:
一个人要从如果干个地方拿货,每个地方的货物是有存在时间的,到了某个时间之后就会消失。
按照位置从左到右给出货物的位置以及生存时间,这个人选择一个最优的位置出发,问拿完货物的最少时间。
思路:
首先确定最优位置就是生存时间最少的货物的位置。
区间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的更多相关文章
- UVA - 1632 Alibaba 区间dp
题意:给定n个点,其中第i个点的坐标是,且它会在秒后消失.Alibaba可以从任意位置出发,求访问完所有点的最短时间.无解输出No solution. 思路:表示访问完区间后停留在i点的最短时间,表示 ...
- UVA - 1632 Alibaba (区间dp+常数优化)
题目链接 设$dp[l][r][p]$为走完区间$[l,r]$,在端点$p$时所需的最短时间($p=0$代表在左端点,$p=1$代表在右端点) 根据题意显然有状态转移方程$\left\{\begin{ ...
- 【Uva 1632】Alibaba
[Link]: [Description] 直线上有n(n≤10000)个点,其中第i个点的坐标是xi,且它会在di秒之后消失.Alibaba 可以从任意位置出发,求访问完所有点的最短时间.无解输出N ...
- UVa 1632 阿里巴巴(区间DP)
https://vjudge.net/problem/UVA-1632 题意: 直线上有n个点,其中第i个点的坐标是xi,且它会在di秒之后消失.Alibaba可以从任意位置出发,求访问完所有点的最短 ...
- UVA - 10723 Alibaba (dp)
给你两个长度不超过30的字符串序列,让你找到一个最短的字符串,使得给定的两个字符串均是它的子序列(不一定连续),求出最短长度以及符合条件的解的个数. 定义状态(a,b,c)为当前字符串长度为a,其中包 ...
- ZOJ 3469 Food Delivery(区间DP)
https://vjudge.net/problem/ZOJ-3469 题意:在一条直线上有一个餐厅和n个订餐的人,每个人都有随时间上升的不满意值,从餐厅出发,计算出送完时最小的不满意值总和. 思路: ...
- 2018 Spring Single Training B (uva 572,HihoCoder 1632,POJ 2387,POJ 2236,UVA 10054,HDU 2141)
这场比赛可以说是灰常的水了,涨信心场?? 今下午义务劳动,去拿着锄头发了将近一小时呆,发现自己实在是干不了什么,就跑到实验室打比赛了~ 之前的比赛补题补了这么久连一场完整的都没补完,结果这场比完后一小 ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
随机推荐
- pip技巧(加速下载和安装)
pip技巧(linux同样) 某些开发包下载过程中会很慢,会出现timeout的情况,解决办法: 可以配置下镜像,加速下载和安装 1.python的豆瓣源地址(镜像) https://pypi.dou ...
- Python开发【模块】:aiohttp(一)
AIOHTTP 用于asyncio和Python的异步HTTP客户端/服务器 主要特点: 支持客户端和HTTP服务器. 支持服务器WebSockets和 客户端WebSockets开箱即用,没有回调地 ...
- 【PyQt5-Qt Designer】PyQt5+pyecharts 实现GUI界面的数据可视化展示
先用纯Python代码写一个简单的小案例: from PyQt5.QtCore import QUrl from PyQt5.QtWidgets import QApplication,QWidget ...
- CS0433: 类型“Microsoft.Reporting.WebForms.ReportViewer”同时存在于“c:/WINDOWS/assembly/GAC_MSIL/Microsoft.ReportViewer.WebForms/8.0.0.0_ 标签: cassembly
CS0433: 类型“Microsoft.Reporting.WebForms.ReportViewer”同时存在于“c:/WINDOWS/assembly/GAC_MSIL/Microsoft.Re ...
- sqlserver配置允许快照隔离
ALTER DATABASE TustenaOS SET ALLOW_SNAPSHOT_ISOLATION ON
- cxImage控件使用
属性: Picture:载入要显示的图片 Properties->Caption在没有内容的时候显示在图片框中间的文字 Properties->PopupMenuLayout->Me ...
- LongAdder,AtomicIntegerFieldUpdater深入研究
从LongAdder看更高效的无锁实现 AtomicIntegerFieldUpdater字段原子更新类 div:not([id]){display:none;} --> ul{padding: ...
- vue-3.0创建项目
.npm install --global @vue/cli .npm install -g @vue/cli-init .vue init webpack my-project
- 万恶之源 - Python开发规范
开发规范 什么是开发规范?为什么要有开发规范呢? 你现在包括之前写的一些程序,所谓的'项目',都是在一个py文件下完成的,代码量撑死也就几百行,你认为没问题,挺好.但是真正的后端开发的项目,系统等,少 ...
- 华为核心交换机绑定IP+MAC+端口案例
1 案例背景 某网络改造项目,核心交换机为华为S5700,接入交换机为不同型号交换机,如下模拟拓扑,客户端接入交换机1通过Access模式与核心交换机连接,该交换机下只有一个Vlan2 ...