60分求助
查看原帖
60分求助
658973
what_can_I_do楼主2022/12/21 22:00

TLE 4个点

#include<bits/stdc++.h>
using namespace std;
int n,m,ans=2147483647;
inline void dfs(int k,int s,int prer,int preh)
{
	if(k>m){if(n==0) ans=min(ans,s);return;}
	if(s>ans) return;
	for(register int i=m-k+1;i<=prer-1;i++)
		for(register int j=m-k+1;j<=preh-1;j++)
		{
			if(n-i*i*j<0) break;
			if(k==1) n-=i*i*j,dfs(k+1,s+2*i*j+i*i,i,j),n+=i*i*j;
			else n-=i*i*j,dfs(k+1,s+2*i*j,i,j),n+=i*i*j;
		}
}
int main()
{
	scanf("%d%d",&n,&m);
	dfs(1,0,n+1,n+1);
	printf("%d",ans);
    return 0;
}
2022/12/21 22:00
加载中...