区间dp(模板)


#include<bits/stdc++.h>
using namespace std;
int const N=57;
int n,c;
int a[N],w[N];
int f[N][N][2];
int main(){
	cin >> n >> c;
	for(int i=1;i<=n;++i){
		cin >> a[i] >> w[i];
		w[i]+=w[i-1];
	}
	memset(f,0x7f,sizeof f);
	f[c][c][0]=f[c][c][1]=0;
	for(int l=2;l<=n;++l){
		for(int i=1;i+l-1<=n;++i){
			int j=i+l-1;
			f[i][j][0]=min( f[i+1][j][0]+(a[i+1]-a[i])*(w[i]+w[n]-w[j]) ,
						    f[i+1][j][1]+(a[j]-a[i])*(w[i]+w[n]-w[j])  );
			f[i][j][1]=min( f[i][j-1][0]+(a[j]-a[i])*(w[i-1]+w[n]-w[j-1]),
							f[i][j-1][1]+(a[j]-a[j-1])*(w[i-1]+w[n]-w[j-1]) );
		}
	}
	int ans=min(f[1][n][0],f[1][n][1]);
	cout << ans;
	return 0;	
}


全部评论

相关推荐

争当牛马还争不上
码农索隆:1.把简历改哈 2.猛投,狠投 3.把基础打牢 这样你在有机会的时候,才能抓住
点赞 评论 收藏
分享
Yki_:你要算时间成本呀,研究生两三年,博士三四年,加起来就五六年了,如果你本科去腾讯干五年,多领五年的年薪,加上公司内涨薪,可能到时候十五年总薪资也跟博士差不多
点赞 评论 收藏
分享
有担当的灰太狼又在摸...:零帧起手查看图片
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务