题目描述

某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少)。老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯。

为了给村里节省电费,老张记录下了每盏路灯的位置和功率,他每次关灯时也都是尽快地去关,但是老张不知道怎样去关灯才能够最节省电。他每天都是在天亮时首先关掉自己所处位置的路灯,然后可以向左也可以向右去关灯。开始他以为先算一下左边路灯的总功率再算一下右边路灯的总功率,然后选择先关掉功率大的一边,再回过头来关掉另一边的路灯,而事实并非如此,因为在关的过程中适当地调头有可能会更省一些。

现在已知老张走的速度为1m/s,每个路灯的位置(是一个整数,即距路线起点的距离,单位:m)、功率(W),老张关灯所用的时间很短而可以忽略不计。

请你为老张编一程序来安排关灯的顺序,使从老张开始关灯时刻算起所有灯消耗电最少(灯关掉后便不再消耗电了)。

输入输出格式

输入格式:

文件第一行是两个数字n(0<n<50,表示路灯的总数)和c(1<=c<=n老张所处位置的路灯号);

接下来n行,每行两个数据,表示第1盏到第n盏路灯的位置和功率。

输出格式:

一个数据,即最少的功耗(单位:J,1J=1W·s)。

输入输出样例

输入样例#1:

5 3
2 10
3 20
5 20
6 30
8 10

输出样例#1:

270  

说明

输出解释:

{此时关灯顺序为3 4 2 1 5,不必输出这个关灯顺序}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

区间DP~

(新笔记本的键盘真奇葩啊按了半天shift发现按的是pgup……)

很久以前刚学动规的时候做过,实际上那时候连区间动规都不知道……现在再看感觉又不一样了啊……

比较经典的区间动规吧,三个状态f[i][j][k]代表区间[i,j],k是方向,k=0,表示往i走;k=1,表示往j走~

还有前缀和!

初始化f的值不能太大!不然会爆掉!

#include<cstdio>
#include<cstring>
#define min(u,v) u<v ? u:vint n,m,a[1005],c[1005],f[1005][1005][2];int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%d%d",&c[i],&a[i]);a[i]+=a[i-1];}memset(f,127,sizeof(f));f[m][m][0]=f[m][m][1]=0;for(int j=m;j<=n;j++)for(int i=j-1;i;i--){f[i][j][0]=min(f[i+1][j][0]+(a[n]-(a[j]-a[i]))*(c[i+1]-c[i]),f[i+1][j][1]+(a[n]-(a[j]-a[i]))*(c[j]-c[i]));f[i][j][1]=min(f[i][j-1][1]+(a[n]-(a[j-1]-a[i-1]))*(c[j]-c[j-1]),f[i][j-1][0]+(a[n]-(a[j-1]-a[i-1]))*(c[j]-c[i]));}printf("%d\n",min(f[1][n][0],f[1][n][1]));return 0;
} 

洛谷 P1220 关路灯 [动态规划做法]相关推荐

  1. 【区间dp】洛谷 P1220 关路灯

    P1220 关路灯 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 有一排路灯,老张有一个初始位置,他要把所有路灯都关掉.每个路灯都有各自的功率和坐标,问你关掉所有路灯所消耗 ...

  2. 洛谷P1220 关路灯(区间dp)

    关路灯 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯.为了给村里节 ...

  3. [洛谷]P1220 关路灯 (#区间dp)

    题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...

  4. 洛谷 P1220 关路灯(DFS)

    题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...

  5. 四川2008省选·洛谷·奖励关

    初见安~这里是传送门:洛谷P2473 题目描述 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关.在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出 ...

  6. 洛谷P1280 caioj 1085 动态规划入门(非常规DP9:尼克的任务)

    这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...

  7. luogu P1220 关路灯

    题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...

  8. P1220 关路灯 (区间dp)

    题目链接 题解: 在关完路灯 i~j 时,老张要么在 i 处,要么在 j 处. 1. 要么是在关完 j 路灯后再回头关 i 路灯的,要么是在关完第 i+1 盏后继续前进关掉 i 的,在这两种情况中选择 ...

  9. 花店橱窗布置(洛谷P1854)(动态规划)

    传送门 文章目录 解析 问题 代码 解析 一道很正常的动态规划 dp[i][j]表示到第j个花瓶放了第j朵花的dp最优值 注意:是严格使第i朵放在j瓶 找到最优解递归输出即可 问题 又是初始化的问题! ...

最新文章

  1. mysql某个表被行锁了_MySQL中的锁(表锁、行锁)
  2. 笔记-信息系统开发基础-信息系统生命周期
  3. JavaScript实现integerPartition整数划分算法(附完整源码)
  4. boost::mp11::mp_pop_front相关用法的测试程序
  5. .NET 和 JAVA
  6. Latex的表格注释
  7. 波音737-800座位图哪个好_「科普」汽车哪个座位才安全?很多人都不知道
  8. 数据分析 超市条码_郑州科脉助力和美超市店面软件升级智赢
  9. jmeter html 乱码,JMeter3.0图形化HTML报告中文乱码问题处理
  10. 苹果新闻订阅服务Apple News +推出48小时获得逾20万用户
  11. 数字化方法基础_常用函数
  12. Java进阶之路——从初级程序员到架构师,从小工到专家(转)
  13. 虚拟机体验NAS私人云(第四篇):虚拟机安装群晖DSM7.01系统(附赠新版DS918+和DS3615xs启动映像)
  14. 《网络攻防》实验九:web安全基础实践
  15. win101909要不要更新_近年最稳的Win10更新?Win10 1909值得升级吗
  16. Android 应用提示Detected problems with API问题
  17. 在线代码编辑器:Codeanywhere介绍
  18. 【办公类-16-01-01】“机动班下午代班的排班表”(python 排班表系列)
  19. 【钛晨报】字节跳动硬件业务调整,原锤子团队被合并;蔚来回应特斯拉降价冲击:退订是有组织的水军谣言...
  20. 论文管理工具使用初探(主要包括endnote,zotero)

热门文章

  1. 印象笔记图片文字搜索能力
  2. 我来学网络——网络协议三要素
  3. 虚拟化之VMware vSphere全配置
  4. python库turtle的双画笔并发绘制兔兔 表白神器
  5. 啄木鸟素描画法,简单实用【从零基…
  6. 京东Offer难拿吗?做到这样,想不拿offer都难
  7. SDUT OJ 2718
  8. 撰写外文时怎样引用中文文献?
  9. Ubuntu16.04+Cuda8.0+Caffe+ Opencv3.2+Matlab2015b的配置、安装与编译 (二)
  10. java返回列表_从Java 8中的方法返回列表?