区间dp又挂,求条!!样例输出260
  • 板块P1220 关路灯
  • 楼主kind_Ygg
  • 当前回复2
  • 已保存回复2
  • 发布时间2024/8/28 20:40
  • 上次更新2024/8/28 22:29:46
查看原帖
区间dp又挂,求条!!样例输出260
926886
kind_Ygg楼主2024/8/28 20:40
#include<bits/stdc++.h>
#define int long long 
using namespace std;
int n,s;
int l[55],m[55],sum[55];
int dp[55][55][2];//left=0,right=1
signed main()
{
	cin>>n>>s;
	memset(dp,0x3f,sizeof dp);
	for(int i=1;i<=n;i++)
	{
		cin>>m[i]>>l[i];
		sum[i]=sum[i-1]+l[i];
	}
	dp[s][s][0]=dp[s][s][1]=0;
	for(int k=2;k<=n;k++)
	{
		for(int i=1;i+k-1<=n;i++)
		{
			int j=i+k-1;
			dp[i][j][0]=min(dp[i+1][j][0]+(m[i+1]-m[i])*(sum[n]-(sum[j]-sum[i])),dp[i+1][j][1]+(m[j]-m[i])*(sum[n]-(sum[j]-sum[i])));
			dp[i][j][1]=min(dp[i][j-1][0]+(m[j]-m[i])*(sum[n]-(sum[j]-sum[i])),dp[i][j-1][1]+(m[j]-m[j-1])*(sum[n]-(sum[j]-sum[i])));
		}
	}
	cout<<min(dp[1][n][1],dp[1][n][0])<<'\n';
	return 0;
}
2024/8/28 20:40
加载中...