这是我的代码
#include <bits/stdc++.h>
using namespace std;
int s[10010];
int n,m,i,j,k,h;
int sum=0x3f3f3f;
void dfs(int x,int y,int z,int a,int b)
{
int i,j;
if(x==0)
{
if(b==0 && a<sum)
{
sum=a;
}
return ;
}
if(b/(2*y)+a>sum)
{
return ;
}
if(s[x]>b)
{
return ;
}
for(i=y-1;i>=x;i--)
{
if(x==m)
{
a=i*i;
}
for(j=z-1;j>=x;j--)
{
int A=a+2*i*j;
int B=b-i*i*j;
dfs(x-1,i,j,A,B);
}
}
}
int main()
{
cin>>n>>m;
for(i=1;i<=m;i++)
{
s[i]=s[i]+i*i*i;
}
dfs(m,sqrt(n/m),n/(m*m),0,n);
cout<<sum;
return 0;
}
这是提交记录
https://www.luogu.com.cn/record/170456920