《石子合并洛P1880》大佬为啥区间dp数据总是差一点求改
  • 板块学术版
  • 楼主tekliu
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/12/7 09:14
  • 上次更新2024/12/7 12:12:12
查看原帖
《石子合并洛P1880》大佬为啥区间dp数据总是差一点求改
1349005
tekliu楼主2024/12/7 09:14
#include<bits/stdc++.h>
using namespace std;
int a[800000],sum[800000];
int op[8000][8000];
int main(){
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		sum[i]=sum[i-1]+a[i];
		op[i][i]=0;
		
	}
	for(int len=2;len<=n;len++){
		for(int qi=1;len+qi-1<=n;qi++){
			int mo=qi+len-1; 
			op[qi][mo]=1e8;
			for(int i=qi;i<mo;i++){
				op[qi][mo]=min(op[qi][i]+op[i+1][mo]+sum[mo]-sum[qi-1],op[qi][mo]);
			}
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			cout<<op[i][j];
		}
		puts("");
	}
	cout<<op[1][n];
	puts("");
	for(int len=2;len<=n;len++){
		for(int qi=1;len+qi-1<=n;qi++){
			int mo=qi+len-1; 
			op[qi][mo]=-1;
			for(int i=qi;i<mo;i++){
				op[qi][mo]=max(op[qi][i]+op[i+1][mo]+sum[mo]-sum[qi-1],op[qi][mo]);
			}
		}
	}
	cout<<op[1][n];
	
}
2024/12/7 09:14
加载中...