哪位大佬看看为什么33pts
  • 板块P1281 书的复制
  • 楼主sldsld
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/4/2 17:28
  • 上次更新2023/10/23 19:37:10
查看原帖
哪位大佬看看为什么33pts
798284
sldsld楼主2023/4/2 17:28
#include<bits/stdc++.h>
using namespace std;
int max1(int,int);
int print(int,int);
int x,y,i,j,m,n,k,t,l;
int a[501],f[501][501],d[501];
int main()
{
	cin>>m>>k;
	for(i=0;i<=500;i++)
	{
		for(j=0;j<=500;j++)
		{
			f[i][j]=10000000;
		}
	}
	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(max1(f[i-1][l],d[j]-d[l]<f[i][j]))
				{
					f[i][j]=max1(f[i-1][l],d[j]-d[l]);
				 } 
			}
		}
	}
	print(m,k);
 }
int max1(int x,int y)
{
	if(x>y)return x;
	else return y;
}
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;
 } 
2023/4/2 17:28
加载中...