P1220 关路灯

思路

fi,j,0表示关了i\~j的灯并且当前在i(fi,j,0)或j(fi,j,1)
这里的fi,j,0fi,j,1可以由fi+1,j,0,fi+1,j,1,fi,j1,0,fi,j1,1转移过来。
代价就是除了这几盏灯外其他灯的总功率×总时间。

代码

#include <iostream>
#include <cstring>
using namespace std;
const int N = 60;
int n,k;
int idx[N],s[N];
int f[N][N][2];
int main () {
	cin >> n >> k;
	for (int i = 1;i <= n;i++) {
		cin >> idx[i] >> s[i];
		s[i] += s[i - 1];
	}
	memset (f,0x3f,sizeof (f));
	f[k][k][0] = f[k][k][1] = 0;
	for (int len = 2;len <= n;len++) {
		for (int i = 1;i + len - 1 <= n;i++) {
			int j = i + len - 1;
			f[i][j][0] = min (f[i + 1][j][0] + (idx[i + 1] - idx[i]) * (s[n] - (s[j] - s[i])),
			f[i + 1][j][1] + (idx[j] - idx[i]) * (s[n] - (s[j] - s[i])));
			f[i][j][1] = min (f[i][j - 1][0] + (idx[j] - idx[i]) * (s[n] - (s[j - 1] - s[i - 1])),
			f[i][j - 1][1] + (idx[j] - idx[j - 1]) * (s[n] - (s[j - 1] - s[i - 1])));
		}
	}
	cout << min (f[1][n][0],f[1][n][1]) << endl;
	return 0;
}
posted @   incra  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示