解题思路:这道题很明显是用区间dp,可是与以往的区间dp不同,因为对于区间[i,j],机器人所处的位置要么在i,要么在j(因为机器人要移动到某一点才能关闭灯泡,所以对于某一段区间来说,机器人最后肯定在两个端点上,否则将不能成立),那么既然要表示在左端点还是右端点,所以我们再开三维数组dp[i][j][0]表示停留在i点,dp[i][j][1]表示停留在j点,那么剩下的就是状态方程了,跟普通的区间dp一样,很容易写出来。。具体的看代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;const int maxn = 1005;
int n,v,sum[maxn];
int dp[maxn][maxn][2],cost[maxn],dis[maxn];void solve()
{memset(dp,0x1f,sizeof(dp));dp[v][v][0] = dp[v][v][1] = 0;for(int l = 2; l <= n; l++){for(int i = 1; i <= n; i++){int j = i + l - 1;if(j > n) break;dp[i][j][0] = min(dp[i][j][0],dp[i+1][j][0] + (sum[n]-sum[j]+sum[i])*(dis[i+1]-dis[i]));dp[i][j][0] = min(dp[i][j][0],dp[i+1][j][1] + (sum[n]-sum[j]+sum[i])*(dis[j]-dis[i]));dp[i][j][1] = min(dp[i][j][1],dp[i][j-1][0] + (sum[n]-sum[j-1]+sum[i-1])*(dis[j]-dis[i]));dp[i][j][1] = min(dp[i][j][1],dp[i][j-1][1] + (sum[n]-sum[j-1]+sum[i-1])*(dis[j]-dis[j-1]));}}printf("%d\n",min(dp[1][n][0],dp[1][n][1]));
}int main()
{while(scanf("%d",&n)!=EOF){scanf("%d",&v);for(int i = 1; i <= n; i++)scanf("%d%d",&dis[i],&cost[i]);sum[0] = 0;for(int i = 1; i <= n; i++)sum[i] = sum[i-1] + cost[i];solve();}return 0;
}

nyoj 304(区间dp)相关推荐

  1. nyoj 304 节能 【区间dp】

    点击打开链接 节能 时间限制:1000 ms  |  内存限制:65535 KB 难度:5 描述 Dr.Kong设计的机器人卡多越来越聪明.最近市政公司交给卡多一项任务,每天早晨5:00开始,它负责关 ...

  2. (NYoj 304) 节能 --区间DP

    节能 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 Dr.Kong设计的机器人卡多越来越聪明.最近市政公司交给卡多一项任务,每天早晨5:00开始,它负责关掉ZK大道右侧上所 ...

  3. NYOJ 304 节能(DP)

    题目描述 Dr.Kong设计的机器人卡多越来越聪明.最近市政公司交给卡多一项任务,每天早晨5:00开始,它负责关掉ZK大道右侧上所有的路灯. 卡多每到早晨5:00准会在ZK大道上某盏路灯的旁边,然后他 ...

  4. NYOJ 1067 Compress String(区间dp)

    Compress String 时间限制:2000 ms  |  内存限制:65535 KB 难度:3 描述 One day,a beautiful girl ask LYH to help her ...

  5. 合并石子 区间dp水题

    合并石子 链接: nyoj 737 描述: 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N- ...

  6. POJ 2955 Brackets (区间DP)

    题目链接:http://poj.org/problem?id=2955 Brackets Time Limit: 1000MS   Memory Limit: 65536K Total Submiss ...

  7. 0x53. 动态规划 - 区间DP(习题详解 × 8)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 文章目录 0x53. 动态规划 - 区间DP Problem A. 最优矩阵链乘 Problem B. ...

  8. UVA1626 括号序列 Brackets sequence(区间DP匹配括号,输出匹配方案)

    整理的算法模板合集: ACM模板 UVA1626 Brackets sequence 我们将正规括号序列定义如下: 空序列是正规括号序列. 如果 SSS 是一个正规括号序列,那么 (S) 和 [S] ...

  9. UVA10003 切木棍 Cutting Sticks(区间DP、细节)

    整理的算法模板合集: ACM模板 本题其实就是一个区间DP 的模板题,总长度为len,有n个切割点,也就是说能被切割成n+1段,所以左边界是0,有边界是n + 1,所以答案就是f[0][n + 1]. ...

最新文章

  1. python中停车收费问题_使用CKRule实现停车场收费计算
  2. 裴健当选加拿大皇家学会院士:曾任华为首席科学家、京东副总裁,学术引用超8万次...
  3. 七十九、TodoList示例 深入Redux的工作流
  4. NBU调用crontab备份
  5. jupyter的常用操作——Python学习(二)
  6. 用 iOS-System-Services 框架获取iOS设备所用的设备信息
  7. 国密 GmSSL 版本及安装
  8. html5模板md风格,使用CSS3 制作一个material-design 风格登录界面实例
  9. 中国男性最想娶回家的金庸女性角色排行榜zz
  10. 建议收藏,22个Python迷你项目(附源码)
  11. android格式化sd卡软件,SD/TF卡格式化程序
  12. 悼念512汶川大地震遇难同胞
  13. 如何通过C/C++求任意角度的余弦值
  14. linux运行igv报错,远程linux IGV桌面显示(putty+xming+xmanager)-Go语言中文社区
  15. 处理BigDecimal字段, java.math.BigDecimal cannot be cast to [Ljava.lang.Object;
  16. 运行tomcat7w.exe,提示:指定的服务未安装unable to open the service tomcat7
  17. 计算机组成原理cs和we,《计算机组成原理》课程习题答案_秦磊华2011-9-8
  18. Zigbee——串口无线透传分析
  19. 个人关于高考志愿填报的一丁点儿看法
  20. Android Studio常用API

热门文章

  1. 合肥站 | 神策 2019 数据驱动大会「PPT 下载」新鲜出炉!
  2. 转:更改pip源至国内镜像,显著提升下载速度
  3. centos 桥接配置 设置网络代理 lnmp搭建
  4. 写在《30天自制操作系统》上市之前
  5. Import和Assembly
  6. 行业研究报告基本分析思路
  7. what to do preparing for phd
  8. less than 50000 rmb convertible car
  9. how can we make wise decisions?
  10. Final Cut Pro模版网站