首页 > codevs1258 关路灯(☆区间dp)

codevs1258 关路灯(☆区间dp)

1258 关路灯

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 大师 Master
题目描述 Description

多瑞卡得到了一份有趣而高薪的工作。每天早晨他必须关掉他所在村庄的街灯。所有的街灯都被设置在一条直路的同一侧。

多瑞卡每晚到早晨5点钟都在晚会上,然后他开始关灯。开始时,他站在某一盏路灯的旁边。

每盏灯都有一个给定功率的电灯泡,因为多端卡有着自觉的节能意识,他希望在耗能总数最少的情况下将所有的灯关掉。

多端卡因为太累了,所以只能以1m/s的速度行走。关灯不需要花费额外的时间,因为当他通过时就能将灯关掉。

编写程序,计算在给定路灯设置,灯泡功率以及多端卡的起始位置的情况下关掉所有的灯需耗费的最小能量。

输入描述 Input Description

输入文件的第一行包含一个整数N,2≤N≤1000,表示该村庄路灯的数量。

第二行包含一个整数V,1≤V≤N,表示多瑞卡开始关灯的路灯号码。

接下来的N行中,每行包含两个用空格隔开的整数D和W,用来描述每盏灯的参数,其中0≤D≤1000,0≤W≤1000。D表示该路灯与村庄开始处的距离(用米为单位来表示),W表示灯泡的功率,即在每秒种该灯泡所消耗的能量数。路灯是按顺序给定的。

输出描述 Output Description

输出文件的第一行即唯一的一行应包含一个整数,即消耗能量之和的最小值。注意结果小超过1,000,000,000。

样例输入 Sample Input

4

3

2 2

5 8

6 1

8 7

样例输出 Sample Output

56

 

#include 
#include
#include
using namespace std;
int d[100],w[100],s,n;
int f[100][100][3];//如果关闭一个区间的灯,最后人一定在这个区间的左边或右边,关了左边或右边的灯去中间没必要。
//f[i][j][0]表示关了[i,j]区间的灯最后人在i点的最优值,f[i][j][1]表示关了[i,j]区间的灯最后人在j点的最优值
int main()
{scanf("%d%d",&n,&s);for(int i=1;i<=n;i++)scanf("%d%d",&d[i],&w[i]),w[i]+=w[i-1];memset(f,127/3,sizeof(f));f[s][s][0]=f[s][s][1]=0;for(int i=s;i>=1;i--)for(int j=i+1;j<=n;j++){f[i][j][0]=min(f[i+1][j][0]+(d[i+1]-d[i])*(w[n]-(w[j]-w[i])),f[i][j][0]);f[i][j][0]=min(f[i+1][j][1]+(d[j]-d[i])*(w[n]-(w[j]-w[i])),f[i][j][0]);f[i][j][1]=min(f[i][j-1][1]+(d[j]-d[j-1])*(w[n]-(w[j-1]-w[i-1])),f[i][j][1]);f[i][j][1]=min(f[i][j-1][0]+(d[j]-d[i])*(w[n]-(w[j-1]-w[i-1])),f[i][j][1]);}printf("%d",min(f[1][n][1],f[1][n][0]));
}
心若向阳,无谓悲伤

 

转载于:https://www.cnblogs.com/L-Memory/p/6357756.html

更多相关:

  • pcl_common库包含大多数PCL库使用的公共数据结构和方法。核心数据结构包括PointCloud类和许多用于表示点、表面法线、RGB颜色值、特征描述符等的点类型。它还包含许多用于计算距离/范数、均值和协方差、角度转换、几何变换,等等。这个模块是不依赖其他模块的,所以是可以单独编译成功,单独编译出来可利用其中的数据结构自行开发,当...

  • 一. 字符型的分类和表示范围        char:是有符号还是无符号数视编译器而定,一般为有符号数,下文把它全部当成有符号数进行讨论                    表示范围:32位和64位机器上均是一个字节,所以是八个bit位,最高位为符号位之后,后七位是数据位,所以它的取值范围是-128---127(-2^7---2...

  • 第五章 [BX]和loop 1.内存单元间接表示: [bx] mov  dl, [0];  dl  ←  ((ds)×16 + 0) mov  bx, 0 mov  dl, [bx];  dl  ←  ((ds)×16 + (bx)) 可以使用bx间接访问内存单元。默认,段地址在ds。   2.loop指令 (1) 语法格式    ...

  • 1. Container Bootstrap中容器类提供了2个类标识:container、container-fluid。 两者的区别在于:container:容器不止有15px的padding,还有一个随着浏览器宽度变化而变化的margin。container-fluid:只有固定的15px的padding。 因此,containe...

  • Servlet API: javax.servlet.http.HttpServletResponse 用于创建HTTP响应,包括HTTP协议的状态行、响应头以及消息体 HTTP状态码: 100-199:表示信息性代码,标示客户端应该采取的其他动作,请求正在进行。 200-299:表示客户请求成功。 300-399:表示用于已经移走的...

  •         Apache POI是一个开源的利用Java读写Excel,WORD等微软OLE2组件文档的项目。        我的需求是对Excel的数据进行导入或将数据以Excel的形式导出。先上简单的测试代码:package com.xing.studyTest.poi;import java.io.FileInputSt...

  • 要取得[a,b)的随机整数,使用(rand() % (b-a))+ a; 要取得[a,b]的随机整数,使用(rand() % (b-a+1))+ a; 要取得(a,b]的随机整数,使用(rand() % (b-a))+ a + 1; 通用公式:a + rand() % n;其中的a是起始值,n是整数的范围。 要取得a到b之间的...

  • 利用本征图像分解(Intrinsic Image Decomposition)算法,将图像分解为shading(illumination) image 和 reflectance(albedo) image,计算图像的reflectance image。 Reflectance Image 是指在变化的光照条件下能够维持不变的图像部分...

  • 题目:面试题39. 数组中出现次数超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。 你可以假设数组是非空的,并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输出: 2 限制: 1 <= 数组长度 <= 50000 解题: cl...

  • 题目:二叉搜索树的后序遍历序列 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:      5     /    2   6   /  1   3示例 1: 输入: [1,6,3,2,5] 输出...