22分求助。
  • 板块P1281 书的复制
  • 楼主cyxg
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/1/15 14:43
  • 上次更新2023/10/24 04:08:36
查看原帖
22分求助。
328413
cyxg楼主2023/1/15 14:43

谢谢

#include<bits/stdc++.h>
using namespace std;
int m,k,f[600][501],a[1010],sum[1010],start[600],ed[600],dp[500][500],l[1001],mem;
int main(){
	memset(dp,63,sizeof(dp)) ;
	cin>>k>>m;//   k->books 9 3
	for(int i=1;i<=k;i++){
		cin>>a[i];
		sum[i]=sum[i-1]+a[i];
		f[1][i]=sum[i];
//	cout<<sum[i]<<'.';
	}     
	int ans=9999999;
//	cout<<endl;
	f[0][0]=0;
	
	for(int i=1;i<=m;i++){
		ans=9999999;
		int count=1;
		for(int j=1;j<=k;j++){
			
			int temp=f[i][j];
			for(int x=1;x<j;x++){
			//	ans=999999;
			//	cout<<f[i][j]<<" ";
				int temp=dp[i][j];
				f[i][j]=max(sum[j]-sum[j-x-1],f[i-1][j-x]);
				dp[i][j]=min(f[i][j],dp[i][j]);
		//	cout<<dp[3][9]<<" ";
		}
		f[i][j]=dp[i][j];
		//cout<<endl;
	}    }
	int y=f[m][k];
	int he=0,count=m;
	start[m+1]=k+1;
	for(int i=k;i>=1;i--){
		he+=a[i];
		if(he>y){
			start[count]=i+1;
			ed[count]=start[count+1]-1;count--;he=0;continue;
		}
		if(he==y) {
			start[count]=i;
			ed[count]=start[count+1]-1;count--;he=0;continue;
		}
	}   
	cout<<1<<" "<<start[2]-1<<endl;               
	for(int i=2;i<=m;i++){
		cout<<start[i]<<" "<<ed[i]<<endl;
	}
	return 0;
}
                                         

谢谢

2023/1/15 14:43
加载中...