萌新刚学OI20pts求调
  • 板块P1220 关路灯
  • 楼主KAqwq
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/7/8 20:36
  • 上次更新2024/7/8 22:32:03
查看原帖
萌新刚学OI20pts求调
448018
KAqwq楼主2024/7/8 20:36

Code

#include <bits/stdc++.h>
#define N 105

typedef long long LL;
LL n, c;
LL dis[N], w[N], val[N], f[N][N][2];
inline LL pt (LL i, LL j, LL l, LL r) {
	return (dis[j] - dis[i]) * (val[n] - val[r] + val[l - 1]);
}
int main(){
	memset (f, 0x3f, sizeof(f));
	std::cin >> n >> c;
	for (LL i = 1; i <= n; ++i){
		std::cin >> dis[i] >> w[i];
		val[i] = val[i - 1] + w[i];
	}
	f[c][c][0] = f[c][c][1] = 0;
	for (LL len = 2; len <= n; ++len) {
		for (LL i = 1, j = len; j <= n; ++i, ++j) {
			f[i][j][0] = std::min (f[i + 1][j][0] + pt(i, i + 1, i + 1, j), f[i + 1][j][1] + pt(i, j, i + 1, j));
			f[i][j][1] = std::min (f[i][j - 1][0] + pt(i, j, i, j - 1), f[i][j - 1][1] + pt(j - 1, j, i, i- 1));
		}
	}
	std::cout << std::min (f[1][n][0], f[1][n][1]);
    return 0;
}
2024/7/8 20:36
加载中...