比赛 |
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;
}