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】关路灯的更多相关文章

  1. [Luogu1220]关路灯(区间dp)

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

  2. luogu1220 关路灯

    题目大意 路面上有一些开着的灯,每个灯有功率和它的位置,人在第c个灯处,行走速度1m/s.问怎样关灯能使耗能最小,输出这个耗能. 思路 #include <cstdio> #include ...

  3. 洛谷P1220 关路灯

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

  4. Luogu 1220 关路灯(动态规划)

    Luogu 1220 关路灯(动态规划) Description 某一村庄在一条路线上安装了n盏路灯,每盏灯的功率有大有小(即同一段时间内消耗的电量有多有少).老张就住在这条路中间某一路灯旁,他有一项 ...

  5. 109.关路灯(区间dp)

    1258 关路灯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master 题解 查看运行结果 题目描述 Description 多瑞卡得到了一份有趣而高薪的工作.每 ...

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

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

  7. 洛谷——P1220 关路灯

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

  8. 「LuoguP1220」 关路灯(区间dp

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

  9. codevs1258关路灯

    传送门 1258 关路灯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master   题目描述 Description 多瑞卡得到了一份有趣而高薪的工作.每天早晨他 ...

  10. codevs1258 关路灯(☆区间dp)

    1258 关路灯  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 大师 Master     题目描述 Description 多瑞卡得到了一份有趣而高薪的工作.每天早晨他必须 ...

随机推荐

  1. IdentityServer4 配置负载均衡

    如果使用 IdentityServer4 做授权服务的负载均衡,默认情况下是不可以的,比如有两个授权服务站点,一个资源服务绑定其中一个授权服务(Authority配置),如果通过另外一个授权服务获取a ...

  2. js中的事件缓存机制

    异步任务指的是,不进入主线程.而进入"任务队列"(task queue)的任务,只有"任务队列"通知主线程,某个异步任务可以执行了,该任务才会进入主线程执行. ...

  3. SElinux用户管理操作

    查看当前用户上下文 id -Z 查看登陆的用户和其对应的SELinux用户 semanage login -l 改变用户和SELinux的对应关系 semanage login -a选项能改变,-s用 ...

  4. NFS服务器的安装与配置

    由于实验室的项目需要实现在CephFS之上建立NFS之上,所以记录一下NFS服务器的安装与配置流程. 1.NFS服务的简介: NFS 是 Network File System 的缩写,是Sun公司于 ...

  5. Git(3)----Eclipse上Git插件使用技巧

    转载:http://blog.csdn.net/qq_33066205/article/details/56675704 一_安装EGIT插件 http://download.eclipse.org/ ...

  6. 掌握numpy(一)

    NumPy是一款用于科学计算的python包,强大之处在于矩阵的运算以及包含丰富的线性代数运算的支持.本文将对numpy一些常用的用法进行讲解,一来是对自己的知识进行梳理,二来作为一份备忘录供以后查阅 ...

  7. 设计模式的征途—15.观察者(Observer)模式

    在日常生活中,交通信号灯指挥者日益拥挤的城市交通.红灯亮,汽车停止:绿灯亮,汽车继续前行:在这个过程中,交通信号灯是汽车的观察目标,而汽车则是观察者.随着交通信号灯的变化,汽车的行为也会随之变化,一盏 ...

  8. array_unique和array_flip 实现去重间的区别

    array_unique和array_flip 实现去重间的区别 ​php有内置函数array_unique可以用来删除数组中的重复值, phperz~com (PHP 4 >= 4.0.1,  ...

  9. JAVA面试之集合框架(三)

    21.ArrayList和Vector的区别 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态 ...

  10. flex布局元素操作详情

    之前布局一直用的是 position,float之类的,趁着国庆学习一下 flex 布局 父元素: flex-direction: row row-reverse column column-reve ...