节能

时间限制:1000 ms  |  内存限制:65535 KB
难度:5
描述

Dr.Kong设计的机器人卡多越来越聪明。最近市政公司交给卡多一项任务,每天早晨5:00开始,它负责关掉ZK大道右侧上所有的路灯。

卡多每到早晨5:00准会在ZK大道上某盏路灯的旁边,然后他开始关灯。每盏灯都有一定的功率,机器人卡多有着自觉的节能意识,它希望在关灯期间,ZK大道右侧上所有路灯的耗电量总数是最少的。

机器人卡多以1m/s的速度行走。假设关灯动作不需要花费额外的时间,因为当它通过某盏路灯时就顺手将灯关掉。

请你编写程序,计算在给定路灯设置,灯泡功率以及机器人卡多的起始位置的情况下,卡多关灯期间,ZK大道上所有灯耗费的最小能量。

输入
有多组测试数据,以EOF为输入结束的标志
每组测试数据第一行: N 表示ZK大道右侧路灯的数量 (2≤ N ≤ 1000)
第二行: V 表示机器人卡多开始关灯的路灯号码。 (1≤V≤N)
接下来的N行中,每行包含两个用空格隔开的整数D和W,用来描述每盏灯的参数

D表示该路灯与ZK大道起点的距离 (用米为单位来表示),
W表示灯泡的功率,即每秒该灯泡所消耗的能量数。路灯是按顺序给定的。
( 0≤D≤1000, 0≤W≤1000 )

输出
输出一个整数,即消耗能量之和的最小值。注意结果小于200,000,000
样例输入
4
3
2 2
5 8
6 1
8 7
样例输出
56
来源
第四届河南省程序设计大赛

解题思路:

本题是一道Dynamic Programming的题目,机器人关灯要么是去左边关灯,或者是去右边关灯,也即要关闭的下一个路灯要么是从已关闭路段的左端过去的,要么是从已关闭的路段的右端过去的,定义:

DP[i][j][0]表示i到j的路灯都已经关闭,机器人在路灯i的位置,此时已经消耗的最小电能

DP[i][j][1]表示i到j的路灯都已经关闭,机器人在路灯j的位置,此时已经消耗的最小电能

则状态转移式:

DP[i][j][0] = min(DP[i+1][j][0]+[i+1,j]路段以外未关闭路灯在机器人从i+1走的i期间消耗的电能,DP[i+1][j][1]+[i+1,j]路段以外未关闭路灯在机器人从j走到i期间消耗的电能)

DP[i][j][1] = min(DP[i][j-1][0]+[i,j-1]路段以外未关闭路灯在机器人从i走到j期间消耗的电能,DP[i][j-1][1]+[i,j-1]路段以外未关闭路灯在机器人从j-1走到j期间消耗的电能)

AC代码:

 #include<algorithm>
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int N = ;
int dp[N][N][],dw[N][N],st[N],co[N];
int main()
{
int n,s,v,sum;
while(scanf("%d",&n)!=EOF)
{
memset(dw,,sizeof(dw));
sum = ;
scanf("%d",&v);
for(int i =; i<=n; i++)
{
scanf("%d %d",&st[i],&co[i]);
sum =sum+co[i];
}
for(int i=;i<=n;i++)
for(int j=i;j<=n;j++)
dw[i][j] = dw[i][j-]+co[j];
for(int i = v-; i>; i--)
{
dp[i][v][] = dp[i+][v][]+(sum-dw[i+][v])*(st[i+]-st[i]);
dp[i][v][] = dp[i][v][] +(sum-dw[i][v])*(st[v]-st[i]);
}
for(int j =v+; j<=n; j++)
{
dp[v][j][] =dp[v][j-][]+(sum-dw[v][j-])*(st[j]-st[j-]);
dp[v][j][] =dp[v][j][]+(sum-dw[v][j])*(st[j]-st[v]);
} for(int i =v-;i>;i--)
{
for(int j =v+; j<=n; j++)
{
dp[i][j][] = min(dp[i+][j][]+(sum-dw[i+][j])*(st[i+]-st[i]),
dp[i+][j][]+(sum-dw[i+][j])*(st[j]-st[i]));
dp[i][j][] = min(dp[i][j-][]+(sum-dw[i][j-])*(st[j]-st[i]),
dp[i][j-][]+(sum-dw[i][j-])*(st[j]-st[j-]));
}
} printf("%d\n", min(dp[][n][], dp[][n][]));
}
return ;
}

nyoj304 节能的更多相关文章

  1. C-RAN 集中化、协作化、云化、绿色节能(4C)

    中国移动C-RAN力拼第4个C:2018年6月外场组网验证 http://www.c114.net ( 2016/11/22 07:41 ) C114讯 11月22日早间消息(子月)2009年,中国移 ...

  2. [置顶] LED办公楼宇照明节能方案及城市夜景照明节能方案

    LED照明办公楼宇节能方案 .通用标准灯头,可直接替换现有卤素灯.白炽灯.荧光灯.

  3. 第四届河南省ACM 节能 区间DP

    1001: 节 能 时间限制: 1 Sec  内存限制: 128 MB 提交: 21  解决: 9 [提交][状态][讨论版] 题目描述 Dr.Kong设计的机器人卡多越来越聪明.最近市政公司交给卡多 ...

  4. 最课程阶段大作业06:U度节能平台控制系统

    除了互联网项目,当今社会还有一个概念非常流行,那就是:物联网.什么是物联网?物联网是通过传感设备,按约定的协议,把任意物品与互联网相连接,进行信息交换和通信,以实现智能化识别.定位.跟踪.监控和管理的 ...

  5. 客户机容易随机出现自动重启、游戏卡问题?不妨优化下BIOS中节能技术!

    相信一些玩主板超频的人都知道,给CPU加电压能够提升CPU的处理速度,很多超频爱好者通过采购超频性能较好,且价格较低的主板和CPU来玩超频,并且通过一些参数的问题能让屌丝设备发挥出高富帅的性能.但是玩 ...

  6. 关闭SSD(固态硬盘)节能功能 提搞SSD性能

     此方法可以缓解比如QQ聊天时能明显感觉到打字过程不连续,0.1s左右的间歇停顿,操作系统并不会锁死,系统突然停止响应,硬盘灯狂闪,鼠标指针成为圆圈,点什么都没反应,这种状况可能会持续1-2分钟, ...

  7. 行车记+翻车记:.NET Core 新车改造,C# 节能降耗,docker swarm 重回赛道

    非常抱歉,10:00~10:30 左右博客站点出现故障,给您带来麻烦了,请您谅解. 故障原因与博文中谈到的部署变更有关,但背后的问题变得非常复杂,复杂到我们都在怀疑与阿里云服务器 CPU 特性有关. ...

  8. C语言普通写法实现:针对多次同步失败的节能处理机制

    程序不美, 不来一一整理了. 以后有时间可以把这个功能封装为一个类的对象来操作.即使不封装为类,至少也该封装为一个独立的函数吧... 关键代码摘要如下: 无线同步信号发射端,每分钟发一次,每次发射的时 ...

  9. 认识 Azure

    本文为官网摘录总结

随机推荐

  1. 【指数型母函数】hdu1521 排列组合

    #include<cstdio> #include<cstring> using namespace std; int n,m,jiecheng[11]; double a[1 ...

  2. sql server博客

    SQLSERVER MSDN论坛 SQLSERVER 补丁博客 SQLSERVER中国研发中心 微软亚太区数据库技术支持组官方博客 PAUL的SQLSKILL网站 sqlsaturday网站 sqls ...

  3. 【mybatis】service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据【事务的问题】

    问题描述: service层中一个方法中使用mybatis进行数据库的 多个修改操作,可能是update也可能是delete操作,但是sql语句命名执行并且在控制台打印出来了,但是数据库中未更新到数据 ...

  4. 【k8s】了解一下k8s

    了解一下k8s 地址: https://www.kubernetes.org.cn/doc-11

  5. docker 实现redis集群搭建

    摘要:接触docker以来,似乎养成了一种习惯,安装什么应用软件都想往docker方向做,今天就想来尝试下使用docker搭建redis集群. 首先,我们需要理论知识:Redis Cluster是Re ...

  6. 解决Windows服务修改配置文件后必须重启的问题

      原文地址:http://www.cnblogs.com/jeffwongishandsome/archive/2011/04/24/2026381.html   解决方法:读取配置文件前先刷新文件 ...

  7. js splice()方法

    splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目. 注释:该方法会改变原始数组. 实例 例子 1 在本例中,我们将创建一个新数组,并向其添加一个元素: <script ty ...

  8. Node.js 调用 restful webservice

    如何构建一个restful web service参考原来的文章 http://www.cnblogs.com/ericnie/p/5212748.html 直接用原来的项目编译好像有问题,此处耗费1 ...

  9. iOS:iOS为什么要用-all_load、-ObjC、-force_load

    为了减少工作量复用部分代码,于是乎我们开始选择重构整个项目,把可以公用的代码放在一起打包成一个静态库导入到其他的项目中使用. 介绍这部分内容的文章在网上很多,各位可以Baidu一下细看. 但是每次在加 ...

  10. CentOS6.6下DRBD+HeartBeat+NFS配置

    一.DRBD配置 Distributed Replicated Block Device(DRBD)是一个用软件实现的.无共享的.服务器之间镜像块设备内容的存储复制解决方案. 我们可以理解为它其实就是 ...