UVA1632_Alibaba
大致题意:直线上面有n个点,第i个点坐标为xi,它会在di时间消失,你可以选择从任何位置出发,求访问完所有点的最短时间,无解输出no solution
思路:这有一个难点就是,不知道状态该怎么转移,其实仔细想想之后会发现我们在走的时候一定是一个区间的慢慢扩大,假设第k次之前做的都是完整区间,那么k+1次只能走这个区间右端+1坐在左端-1的这两个点,因为走的时候必须路过
这样的话,状态转移就明确了,他只能从上一个区间左端和右端转移过来.不过问题又来了,区间大小不确定.其实区间大小可以状态转移过去,k+1大小的区间必然是由k大小的区间转移过来
所以用dp[i][j][0]表示左端,dp[i][j][1]表示区间右端,其中i表示当前区间大小,j表示位置,下面是我优化了内存
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<queue>
#include<cstdlib>
#include<algorithm>
#include<stack>
#include<map>
#include<queue>
#include<vector>
using namespace std;
const int maxn = 1e4+10;
const int INF = 0x3f3f3f3f;
int p[maxn],t[maxn],dp[2][maxn][2],n,ans;
int main(){
while(cin>>n){
for(int i=1;i<=n;i++) cin>>p[i]>>t[i];
for(int i=1;i<=n;i++) dp[0][i][0]=dp[0][i][1]=0;
int x,nx=0;
for(int i=1;i<n;i++){
x=nx;nx^=1;
for(int j=1;j<=n-i;j++){
//0->left 1->right dp[nx][j][0]=min(dp[x][j+1][0]+p[j+1]-p[j],dp[x][j+1][1]+p[j+i]-p[j]);
dp[nx][j][1]=min(dp[x][j][0]+p[j+i]-p[j],dp[x][j][1]+p[i+j]-p[i+j-1]);
if(dp[nx][j][0]>=t[j]) dp[nx][j][0] = INF;
if(dp[nx][j][1]>=t[i+j]) dp[nx][j][1] = INF;
}
}
ans = min(dp[nx][1][0],dp[nx][1][1]);
if(ans>=INF) cout<<"No solution\n";
else cout<<ans<<"\n"; }
return 0;
}
UVA1632_Alibaba的更多相关文章
随机推荐
- 手机网页制作的认识(有关meta标签)(转)
仅用来记录学习: 链接地址:https://blog.csdn.net/ye1992/article/details/22714621
- Jmeter 使用技巧 (如何在linux下运行jmeter视窗界面呢)-jmeter如何模拟http发送gzip数据
jmeter如何模拟http发送gzip数据 有时候我们需要模拟在客户端将数据压缩后, 发送(post)到服务器端. 通常这种情况,会发生在移动终端上. 这样做的好处, 是可以节省流量. 当然, 服 ...
- 3年Java,鏖战腾讯
作者:codegoose https://segmentfault.com/a/1190000017864721 经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次 ...
- jQuery仿Android锁屏图案应用插件
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- SQLAlchemy应用到Flask中
安装模块 pip install Flask-SQLAlchemy 加入Flask-SQLAlchemy第三方组件 from flask import Flask # 导入Flask-SQLAlche ...
- 38.Subsets(子集和)
Level: Medium 题目描述: Given a set of distinct integers, nums, return all possible subsets (the power ...
- 基于QRcode的带有文字+图片的二维码的Vue组件
1 <template> 2 <!-- 生成二维码开放接口: 3 二维码内容[通常为url] 4 二维码大小[限制为正方形] 二维码下方显示:文字 5 二维码中间显示:图片--> ...
- 前序遍历+中序遍历 --> 后序遍历 (二叉树)
- Mac中的brew
最近要研究字体识别tesseract,才了解到brew,惭愧惭愧. 1.brew是一个软件包管理工具,类似于centos下的yum或者ubuntu下的apt-get,非常方便,免去了自己手动编译安装的 ...
- rabbitmq的管理软件以及PHP7安装rabbitmq的
rabbitmq-server管理软件的安装 1.mac下载rabbitmq-server brew install rabbitmq 2.启动服务rabbitmq-server rabbitmq-s ...