P1281,77分求调
  • 板块灌水区
  • 楼主Wrong_Answer_
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/8/2 15:25
  • 上次更新2024/8/2 15:26:41
查看原帖
P1281,77分求调
1065364
Wrong_Answer_楼主2024/8/2 15:25
#include<bits/stdc++.h>
using namespace std;
int m,k,a[505],dp[505][505],s[505];
void print(int m,int x){
	if(m==0) return;
	int sum=0,i;
	for(i=m;i>=1&&sum+a[i]<=x;i--){
		sum+=a[i];
	}
	print(i,x);
	cout<<i+1<<" "<<m<<endl;
}
int main(){
	cin>>m>>k;
	for(int i=1;i<=m;i++) {
		cin>>a[i];
		s[i]=s[i-1]+a[i];
	}
	memset(dp,0x3f,sizeof(dp));
	for(int i=1;i<=m;i++) dp[i][1]=s[i];
	for(int i=1;i<=m;i++){
		for(int j=2;j<=k;j++){
			for(int h=j;h<i;h++){
				dp[i][j]=min(dp[i][j],max(dp[h-1][j-1],s[i]-s[h-1]));
			}
		}
	}
	print(m,dp[m][k]);
	return 0;
}
2024/8/2 15:25
加载中...