/*
按坐标排序
以餐厅为起点向两边扩展区间
dp[i][j][0]表示送完区间[i,j]的饭后停留在左边的代价
dp[i][j][1]表示送完区间[i,j]的饭后停留在右边的代价
*/
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
struct A{int x,v;}p[];
int cmp(A a,A b){return a.x<b.x;}
int sum[],dp[][][],n,v,x;//代价,坐标 int main(){
while(cin>>n>>v>>x){
for(int i=;i<=n;i++)
scanf("%d%d",&p[i].x,&p[i].v);
p[n+].x=x,p[n+].v=;
sort(p+,p+n+,cmp); int pos;//找餐厅
for(int i=;i<=n+;i++)
if(p[i].x==x){pos=i;break;}
memset(sum,,sizeof sum);
for(int i=;i<=n+;i++)
sum[i]=sum[i-]+p[i].v; memset(dp,0x3f,sizeof dp);
dp[pos][pos][]=dp[pos][pos][]=;
for(int i=pos;i>=;i--)
for(int j=pos;j<=n+;j++){
if(i==j)continue;
int delay=sum[i-]+sum[n+]-sum[j];
dp[i][j][]=min(dp[i+][j][]+(p[i+].x-p[i].x)*(delay+p[i].v),//从i+1走到i
dp[i+][j][]+(p[j].x-p[i].x)*(delay+p[i].v));//从j走到i
dp[i][j][]=min(dp[i][j-][]+(p[j].x-p[i].x)*(delay+p[j].v),//从i走到j
dp[i][j-][]+(p[j].x-p[j-].x)*(delay+p[j].v));//从j-1走到j
}
printf("%d\n",min(dp[][n+][],dp[][n+][])*v);
}
}

zoj3469 区间dp好题的更多相关文章

  1. 又一道区间DP的题 -- P3146 [USACO16OPEN]248

    https://www.luogu.org/problemnew/show/P3146 一道区间dp的题,以区间长度为阶段; 但由于要处理相邻的问题,就变得有点麻烦; 最开始想了一个我知道有漏洞的方程 ...

  2. poj 2955 Brackets (区间dp基础题)

    We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a ...

  3. 状态压缩---区间dp第一题

    标签: ACM 题目 Gappu has a very busy weekend ahead of him. Because, next weekend is Halloween, and he is ...

  4. poj 2955 区间dp入门题

    第一道自己做出来的区间dp题,兴奋ing,虽然说这题并不难. 从后向前考虑: 状态转移方程:dp[i][j]=dp[i+1][j](i<=j<len); dp[i][j]=Max(dp[i ...

  5. 二叉树问题(区间DP好题)

    二叉树问题 时间限制: 1 Sec  内存限制: 128 MB 题目描述 Petya Bulochkin很幸运:他得到了一份在"Macrohard"公司的工作.他想要展现他的才华, ...

  6. codeforces 1140D(区间dp/思维题)

    D. Minimum Triangulation time limit per test 2 seconds memory limit per test 256 megabytes input sta ...

  7. 区间dp板子题:[noi1995]石子合并

    非常经典的区间dp模板 对于每一个大于二的区间 我们显然都可以将它拆分成两个子序列 那么分别计算对于每个取最优值即可 #pragma GCC optimize("O2") #inc ...

  8. [nyoj737]石子归并(区间dp入门题)

    题意:有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆.求出总的代价最小值 ...

  9. 石子合并 区间DP模板题

    题目链接:https://vjudge.net/problem/51Nod-1021 题意 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子合并成新的一堆,并将新的一堆石 ...

随机推荐

  1. yolov2源码分析

    分析过程首先我们从yolo的训练命令开始分析(yolo的源码是用c++写的): ./darknet detector train cfg/voc.data cfg/yolo-voc.cfg darkn ...

  2. Jedis操作笔记 redis的五种存储类型

    常用数据类型简介: redis常用五种数据类型:string,hash,list,set,zset(sorted set). 1.String类型 String是最简单的类型,一个key对应一个val ...

  3. java基本数据类型,访问控制符,运算符执行顺序

    1.java数据类型 内置数据类型:boolean(1),  byte(8), char(16), short(8), int(32), long(64), float(32), double(64) ...

  4. python 小程序,输错三次密码锁定账户

    [root@sun ~]# cat 7.py #!/usr/bin/python # -*- coding=UTF-8 -*- usera_name = 'usera' usera_passwd = ...

  5. C# CEF 封装UserControl

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...

  6. 破解WEP工具wesside-ng

    1.关于wesside-ng wesside-ng是一款自动化的WEP破解工具,该工具采用了多种WEP加密破解技术.它首先会自动明确目标无线网络,然后尝试与之相关联,在获得PRGA(伪随机生成算法)异 ...

  7. Github安全整理(转载)

    刚好这两天对之前github上关注的一些比较有意思的项目进行了一下分类整理,在这里列出来分享给大家,希望能对大家寻找工具或者资源有所帮助. 大部分Repo是关于安全以及Python的,也有一些其他主题 ...

  8. VSS2005源代码管理

    VSS2005使用详细 http://www.docin.com/p-467455948.html 花了差不多一天的时间把vss配置搞明白了~废话不多说,下面简单的介绍下配置的过程:安装VSS2005 ...

  9. C# 使用ffmpeg视频截图

    <appSettings> <add key="ffmpeg" value="E:\ffmpeg\ffmpeg-20141012-git-20df026 ...

  10. springboot项目使用idea开启远程调试

    远程调试是调试服务器的有效手段,远程服务器运行的应用可以在本地代码中打断点调试,能让开发人员准确定位服务器上的问题. 一.开启远程调试前提:本地代码与服务器代码一致, 二.开启远程调试步骤 1.开发工 ...