求助
  • 板块P1220 关路灯
  • 楼主__why
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/5/17 20:07
  • 上次更新2024/5/17 21:56:14
查看原帖
求助
768270
__why楼主2024/5/17 20:07

rt 代码

#include<bits/stdc++.h>
using namespace std;
const int maxn = 55;
int n,c;
int m[maxn],w[maxn],s[maxn],q[maxn];
int f[maxn][maxn][2];
int main(){
	cin>>n>>c;
	for(int i = 1;i<=n;i++){
		cin>>m[i]>>w[i];
		s[i] = s[i-1]+w[i];
		q[i] = q[i-1]+w[i]*m[i];
	}
	memset(f,0x3f3f,sizeof(f));
	f[c][c][0]=f[c][c][1]=0;
	for(int len = 2;len<=n;len++){
		for(int i = 1,j = i+len-1;j<=n;i++,j++){
			f[i][j][0] = min(f[i+1][j][0]+w[i+1]*(m[i+1]-m[i])+(s[n]-s[j]+s[i-1])*(m[i+1]-m[i]),f[i+1][j][1]+m[j]*(s[j-1]-s[i-1])-(q[j-1]-q[i-1])+(s[n]-s[j]+s[i-1])*(m[j]-m[i]));
			f[i][j][1] = min(f[i][j-1][1]+w[j-1]*(m[j]-m[j-1])+(s[n]-s[j]+s[i-1])*(m[j]-m[j-1]),f[i][j-1][0]+(q[j]-q[i])-m[i]*(s[j]-s[i-1])+(s[n]-s[j]+s[i-1])*(m[j]-m[j-1]));
		}
	}
	cout<<min(f[1][n][0],f[1][n][1]);
}
2024/5/17 20:07
加载中...