【luogu1220】关路灯
https://www.luogu.org/problem/show?pid=1220
假如当前老张在a处跑去关掉b处的路灯,那么a与b之间的路灯都可以顺手关掉。因此每一时刻关掉的路灯必定是连续的。
f(i,j,0)表示i~j的路灯全部关掉且老张处于最左边时的耗电。f(i,j,1)表示i~j的路灯全部关掉且老张处于最右边时的耗电。
状态转移方程:
f(i,j,0)=min{
f(i+1,j,0)+(dist[i+1]-dist[i])*(watt[1,i]+watt[j+1,n]),
f(i+1,j,1)+(dist[j]-dist[i])*(watt[1,i]+watt[j+1,n])
}
f(i,j,1)=min{
f(i,j-1,1)+(dist[j]-dist[j-1])*(watt[1,i-1]+watt[j,n]),
f(i,j-1,0)+(dist[j]-dist[i])*(watt[1,i-1]+watt[j,n])
}
watt[i,j]表示i~j的路灯的总功率。
边界条件:f(i,i,0 or 1)=∞,f(c,c,0 or 1)=0
∞不能太大,因为要用来运算。
#include <iostream>
#define maxn 60
#define inf 0x7ffffffffffffff0
using namespace std;
int n, c;
int dist[maxn], wattsum[maxn];
unsigned long long dp0[maxn][maxn], dp1[maxn][maxn];
int main()
{
cin >> n >> c;
for(int i = ; i <= n; i++)
{
cin >> dist[i] >> wattsum[i];
wattsum[i] += wattsum[i - ];
} for(int i = ; i <= n; i++)
dp0[i][i] = dp1[i][i] = inf;
dp0[c][c] = dp1[c][c] = ;
for(int len = ; len <= n; len++)
{
for(int i = , j = len; j <= n; i++, j++)
{
dp0[i][j] = min(dp0[i + ][j] + (dist[i + ] - dist[i]) * (wattsum[i] - wattsum[] + wattsum[n] - wattsum[j]), dp1[i + ][j] + (dist[j] - dist[i]) * (wattsum[i] - wattsum[] + wattsum[n] - wattsum[j]));
dp1[i][j] = min(dp1[i][j - ] + (dist[j] - dist[j - ]) * (wattsum[i - ] - wattsum[] + wattsum[n] - wattsum[j - ]), dp0[i][j - ] + (dist[j] - dist[i]) * (wattsum[i - ] - wattsum[] + wattsum[n] - wattsum[j - ]));
}
}
cout << min(dp0[][n], dp1[][n]) << endl;
return ;
}
【luogu1220】关路灯的更多相关文章
- [Luogu1220]关路灯(区间dp)
[Luogu1220]关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏 ...
- luogu1220 关路灯
题目大意 路面上有一些开着的灯,每个灯有功率和它的位置,人在第c个灯处,行走速度1m/s.问怎样关灯能使耗能最小,输出这个耗能. 思路 #include <cstdio> #include ...
- 洛谷P1220 关路灯
洛谷1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关 ...
- Luogu 1220 关路灯(动态规划)
Luogu 1220 关路灯(动态规划) Description 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项 ...
- 109.关路灯(区间dp)
1258 关路灯 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题解 查看运行结果 题目描述 Description 多瑞卡得到了一份有趣而高薪的工作.每 ...
- 洛谷P1220 关路灯(区间dp)
关路灯 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯.为了给村里节 ...
- 洛谷——P1220 关路灯
P1220 关路灯 题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉 ...
- 「LuoguP1220」 关路灯(区间dp
题目描述 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项工作就是每天早上天亮时一盏一盏地关掉这些路灯. 为了给村 ...
- codevs1258关路灯
传送门 1258 关路灯 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 多瑞卡得到了一份有趣而高薪的工作.每天早晨他 ...
- codevs1258 关路灯(☆区间dp)
1258 关路灯 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 多瑞卡得到了一份有趣而高薪的工作.每天早晨他必须 ...
随机推荐
- 使用weinre远程调试
1.调试环境: 1)使用nodejs搭建调试服务器: 先安装node,然后使用npm安装weinre,在node.js安装目录输入以下命令 npm install weinre 2)需要wifi环境和 ...
- 【Kafka源码】KafkaController启动过程
[TOC] 之前聊过了很多Kafka启动过程中的一些加载内容,也知道了broker可以分为很多的partition,每个partition内部也可以分为leader和follower,主从之间有数据的 ...
- 由Python通过__new__实现单例模式,所想到的__new__和__init__方法的区别
之前通过读书,了解到在Python中可以通过__new__方法来实现单例模式,代码一个示例如下,我就有了几个疑问,什么是单例模式?__new__方法是用来做什么的?用__new__方法实现的单例模式, ...
- maven下的sqlserver配置jar包
看了两天的maven,开始把之前做的ssm项目搭建成maven项目,结果在sqlserver的依赖包上受阻,sqlserver需要sqljdbc4.jar包,经过一系列百度教程才得以解决,现在总结一下 ...
- ASP.Net Controls 用法大全
The FindControl method of the System.Web.UI.Control class appears simple enough to use. In fact, the ...
- 雅虎公司C#笔试题及参考答案
Question 1. (单选) 在计算机网络中,表征数据传输可靠性的指标是——21. 传输率2. 误码率3. 信息容量4. 频带利用率Question 2. (单选) 以下关于链式存储结构的叙述中哪 ...
- 解决mssql localdb 中文乱码问题
使用以下查询语句即可. alter database "E:\.Net Core\Database\hm.mdf" set single_user with rollback im ...
- 漫淡面向对象——POJO对象
产品或者服务由数据存储和数据计算组成.pojo对象就是用于数据存储.一旦确定后,整个应用或者产品的数据来源就确定.比如一个页面或者功能需要使用什么数据就可以快速找到对应的对象或者通过对象的关系找出来. ...
- JSF页面中使用js函数回调后台action方法
最近遇到了一个问题就是在JSF页面中嵌入html页面,这个html页面中很多功能是使用js动态生成的,现在需要在js函数里想去调用JSF中action类method()方法并动态传送数据给后台进行处理 ...
- configpraser模块
configpraser配置文件,example.conf [data] #节点 username = Jason password = 123 [public] comment = stuff pu ...