题目链接

大致题意:直线上面有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;
}

最新文章

  1. iOS面试题
  2. css实现容器垂直水平居中的七中方法
  3. 最详细易懂的CRC-16校验原理(附源程序)
  4. android studio 各种问题
  5. 2.每人自己建立一个HelloWorld项目,练习使用git的add/commit/push/pull/fetch/clone等基本命令。比较项目的新旧版本的差别。答题人:张立鹏
  6. mac下配置laravel环境
  7. T-SQL基础 (存储过程,触发器|| 笔记0808)
  8. 掌握Docker命令
  9. fastboot模式
  10. django项目实际工作中的配置以及一些有用的小工具(持续更新)
  11. IPV4闪退
  12. LeetCode 883 Projection Area of 3D Shapes 解题报告
  13. 014-通过JDB调试,通过HSDB来查看HotSpot VM的运行时数据
  14. django之创建第7-6-第三种传值方式
  15. android开发之interpolator的使用
  16. Thrift RPC框架介绍
  17. java常量池与对象存储
  18. Python-常见错误梳理
  19. 响应式布局(Responsive Layout)/流式布局(Fluid Layout)/自适应布局(Adaptive)
  20. 几本推荐的Java书

热门文章

  1. day 107radis非关系型数据库
  2. selenium,webdriver 执行js语句 对象是百度
  3. Linux vsftpd服务配置以及三种验证方式以及常见错误解决办法
  4. Cocos2d 之FlyBird开发---GameUnit类
  5. mybatis关联查询之一对多查询
  6. python基础----以面向对象的思想编写游戏技能系统
  7. 多线性方程组迭代算法——Gauss-Seidel迭代算法的Python实现
  8. 搭建 webpack、react 开发环境(三)
  9. HDU 1398 Square Coins(DP)
  10. HDU 6464 /// 权值线段树