博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1991 DP
阅读量:6609 次
发布时间:2019-06-24

本文共 1540 字,大约阅读时间需要 5 分钟。

题意:

这里写图片描述
这里写图片描述
思路:

考虑DP

先把事件按照地点顺序排个序
f[i][j][0]表示从i到j还没有去过 现在在i
f[i][j][1]表示从i到j还没有去过 现在在j
那么方程就呼之欲出了
f[i][j][0]=max(min(f[i-1][j][0]+node[i].pos-node[i-1].pos,f[i][j+1][1]+node[j+1].pos-node[i].pos),node[i].t);
f[i][j][1]=max(min(f[i-1][j][0]+node[j].pos-node[i-1].pos,f[i][j+1][1]+node[j+1].pos-node[j].pos),node[j].t);

需要对边界进行特殊处理

//By SiriusRen#include 
#include
using namespace std;int n,h,b,f[1005][1005][2];struct Node{
int pos,t;}node[1005];bool cmp(Node a,Node b){
if(a.pos!=b.pos)return a.pos
=i;j--){ if(i==1&&j==n){f[i][j][1]=max(node[j].t,node[j].pos);continue;} if(i==1){ f[i][j][0]=max(f[i][j+1][1]+node[j+1].pos-node[i].pos,node[i].t); f[i][j][1]=max(f[i][j+1][1]+node[j+1].pos-node[j].pos,node[j].t); continue; } if(j==n){ f[i][j][0]=max(f[i-1][j][0]+node[i].pos-node[i-1].pos,node[i].t); f[i][j][1]=max(f[i-1][j][0]+node[j].pos-node[i-1].pos,node[j].t); continue; } f[i][j][0]=max(min(f[i-1][j][0]+node[i].pos-node[i-1].pos,f[i][j+1][1]+node[j+1].pos-node[i].pos),node[i].t); f[i][j][1]=max(min(f[i-1][j][0]+node[j].pos-node[i-1].pos,f[i][j+1][1]+node[j+1].pos-node[j].pos),node[j].t); } for(int i=1;i<=n;i++)if(node[i].pos==b){
printf("%d\n",min(f[i][i][0],f[i][i][1]));return 0;}}

这里写图片描述

转载于:https://www.cnblogs.com/SiriusRen/p/6532194.html

你可能感兴趣的文章
Promise 学习笔记 - 时间支配者
查看>>
Lintcode: Sqrt(X)
查看>>
Jmeter 新手
查看>>
iOS之UI--关于modal
查看>>
各种U启网启什么的都是浮云
查看>>
请问JDBC中IN语句怎么构建
查看>>
2015第52周六
查看>>
UIScrollView设置了contentSize后还是没办法滚动?
查看>>
POJ 1205 Water Treatment Plants(递推)
查看>>
国内外DNS服务器地址列表
查看>>
买电脑之受骗经历--与诸位共享,愿诸位多一个心眼
查看>>
Lind.DDD.Authorization用户授权介绍
查看>>
counting objects in class
查看>>
上海Uber优步司机奖励政策(2月1日~2月7日)
查看>>
第二章 JVM内存分配
查看>>
Codeforces Round #272 (Div. 2)
查看>>
ThinkPHP3.2.3 自定义标签库的使用
查看>>
Activiti 5.17 实体对象与类和数据库表的映射
查看>>
【转】SVN服务器端安装、配置与管理--不错
查看>>
Fragment中的setUserVisibleHint()方法调用
查看>>