社区讨论

7个RE,求调。

P1281[CERC1998] 书的复制参与者 3已保存回复 4

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
4 条
当前快照
1 份
快照标识符
@m6vy4f8a
此快照首次捕获于
2025/02/08 16:41
去年
此快照最后确认于
2025/11/04 09:43
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int x,y,i,j,m,n,k,t,l;
int a[5001],f[5001][5001],d[5001];
int print(int i,int j) {         
	int t,x;
	if (j==0) return 0;
	if (j==1) {                    
		cout<<1<<" "<<i<<endl;
		return 0;
	}
	t=i;
	x=a[i];
	while (x+a[t-1]<=f[k][m]) {
		x+=a[t-1];
		t--;
	}
	print(t-1,j-1);              
	cout<<t<<" "<<i<<endl;  
}

int main() {
	cin>>m>>k;
	for (i=0; i<=m; i++)
		for (j=0; j<=m; j++)
			f[i][j]=1e8;
	for (j=1; j<=m; j++) {
		cin>>a[j];
		d[j]=d[j-1]+a[j];
		f[1][j]=d[j];
	}
	for (i=2;i<=k;i++)
		for (j=1;j<=m;j++)
			for (l=1;l<=j-1;l++)
				if (max(f[i-1][l],d[j]-d[l])<f[i][j])
					f[i][j]=max(f[i-1][l],d[j]-d[l]);
	print(m,k);
	return 0;
}

回复

4 条回复,欢迎继续交流。

正在加载回复...