Subtask #1第二个样例没过!大神求解!
查看原帖
Subtask #1第二个样例没过!大神求解!
1249836
adminh楼主2024/4/14 11:51
#include<bits/stdc++.h>
using namespace std;
int r[21],h[21],n,m,we=0x3f3f3f3f;
void dfs(int v,int s,int k,int p){ 
	int i,j;
	
	if(v<0){
		return;
	} 
	if(k<0){
		return;
	}
	if(s+k+r[1]*r[1]>we){
		return;
	}
	if(v>r[p-1]*r[p-1]*h[p-1]*k)return;
	if(k==0&&v==0){
		s+=r[1]*r[1];
		we=min(we,s);
		return;
	}
	for(i=r[p-1]-1;i>=k;i--){
		for(j=h[p-1]-1;j>=k;j--){
			if(v>=i*i*j&&k>=0){
				r[p]=i;
				h[p]=j;
				dfs(v-i*i*j,s+2*i*j,k-1,p+1);
				r[p]=i;
				h[p]=j;
			}
		}
	}
}
int main(){
	cin>>n>>m;
	h[0]=int(sqrt(n));
	r[0]=int(sqrt(n));
	dfs(n,0,m,1);
	if(we==0x3f3f3f3f){
		cout<<0;
	}else{
		cout<<we;
	}
	return 0; 
} 

大神求解!

2024/4/14 11:51
加载中...