【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 多瑞卡得到了一份有趣而高薪的工作.每天早晨他必须 ...
随机推荐
- Xilinx ISE 14.1利用Verilog产生clock
<一>建立如下的Verilog Module module myClock( input clock ); endmodule <二>建立 Verilog Test Fixtu ...
- Exclusive-OR(带权并查集)
Exclusive-OR Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- ASP.NET Core的身份认证框架IdentityServer4(5)- 包和构建
包和构建 IdentityServer有许多nuget包 IdentityServer4 nuget | github 包含IdentityServer核心对象模型,服务和中间件. 仅支持内存配置和用 ...
- HTML学习笔记 cs2D3D展示基础 第十四节 (原创) 参考使用表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 转:ef获取某个表中的部分字段值
我有个新闻表 id,title,body,createtime,author,click 使用ef4.1 仅仅读取 id,title,createtime 并显示在页面上. public static ...
- 一、VueJs 填坑日记之基础概念知识解释
概述在最开始听说vuejs这个词是在2016年,当时天真的认为自己是个后端开发工程师不需要学习太多的前端知识,不过紧接着在2017年在公司就用到了vuejs.对于初学者(尤其是干后端的初学者)来说,刚 ...
- Velocity(7)——velocity进阶用法
1.截取部分字段substring 1 原始字符串:$!ag.tagValue,也许很长,前端页面展示时需要截取字符串. 2 #set($str=$!ag.tagValue) 3 4 #if($str ...
- pycharm安装和首次使用
PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS. Windows. Linux 系统. PyCharm 功能 : 调试.语法高亮.Project管理.代码 ...
- python相关资料
http://blog.jobbole.com/59535/ http://www.nryoung.org/blog/2013/2/28/python-threading/ http://blog.j ...
- 发现AspNet.Core版本控制库Bug一枚,你还想入坑?
我,博客写作小白一枚,注册账号多年却未曾留下只言片语,在潜水的这些年里从大家的博客中收获了很多新的知识忽觉惶恐心有不安,是时候给大家分享一些我的经验和教训了.嗯嗯,实话告诉大家前面的话的都是来凑字数的 ...