比赛 2025.10.18 评测结果 AAAAAAWAAA
题目名称 生日蛋糕 最终得分 90
用户昵称 梦那边的美好TT 运行时间 0.183 s
代码语言 C++ 内存使用 3.67 MiB
提交时间 2025-10-18 10:27:44
显示代码纯文本
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,r[26],h[26],minx=1e9;
void f(int x,int y,int z,int k){
	if(y<0) return ;
	if(x>m+1) return ;
	if(k>=minx) return ;
	if(y==0&&x==m+1){
		k+=r[1]*r[1];
		if(k<minx) minx=k;
		return ;
	}
	if(k+z+r[1]*r[1]>minx) return ;
	if(y-(r[x-1])*(r[x-1])*(h[x-1])*z>0) return ;
	for(int i=r[x-1]-1;i>=z;i--)
	for(int j=h[x-1]-1;j>=z;j--){
	    if(y-i*i*j>=0&&x+1<=m+1){
	        r[x]=i;
			h[x]=j;
			f(x+1,y-i*i*j,z-1,k+(i*2*j));
			h[x]=0;
			r[x]=0;
		}
	}
	return ;
}
int main(){
    freopen("cake.in","r",stdin);
    freopen("cake.out","w",stdout);
	cin>>n>>m;
	r[0]=sqrt(n);
	h[0]=sqrt(n);
	f(1,n,m,0);
	if(minx==1e9) cout<<0<<endl;
	else cout<<minx<<endl;
	return 0;
}