是题目有问题,还是我有问题?求救
查看原帖
是题目有问题,还是我有问题?求救
202606
轻绘楼主2021/3/27 21:16

下载数据本地测和答案一模一样!

但是WA提示就是说我第一个是0!

各种输出方式都试了,实在没有办法,求救!

#include<bits/stdc++.h>
using namespace std;
int n,k;
int ans[500000],o,now,a[500000],p;
int f[500000];
inline int dp(int x){
	for(int i=1;i<=n*a[x];++i)
		f[i]=99999999;
	for(int i=1;i<=x;++i)
		for(int j=a[i];j<=a[x]*n;++j)
			f[j]=min(f[j],f[j-a[i]]+1); 
	for(int i=1;i<=a[x]*n;++i){
		if(f[i]>n)	return i-1;
	}
}
inline void dfs(int num,int la){
	if(num==k+1){
		if(la>now){
			o=0;
			for(int i=1;i<=k;++i)
				ans[++o]=a[o];
			now=la;
		}
		return;
	}
	for(int i=a[num-1]+1;i<=la+1;++i){
		a[num]=i;
		int x=dp(num);
		p=max(p,x);
		dfs(num+1,x);
	} 
}
int main(){
	scanf("%d%d",&n,&k);
	dfs(1,0);
	for(int i=1;i<=k;++i)
		printf("%d ",ans[i]);
	printf("\nMAX=%d",p);
	return 0;
} 
2021/3/27 21:16
加载中...