求助!TLE两个点,从下午改到现在了
查看原帖
求助!TLE两个点,从下午改到现在了
401583
N2MENT楼主2021/8/25 21:20

因为修改了很多次,码风已经不成样子了,答案没有错但超时了,希望大佬救我一命

#include<bits/stdc++.h>
using namespace std;
int ans=0x3f3f3f3f;
int n,m;
int ads;//增加的表面积 
int adv;//增加的体积 
void dfs(int h,int r,int s,int v,int dep) //从上往下深度优先搜索
{
	if(s>=ans)
	{
		return;
	}
	if(dep==m)
	{
		if(v==n) ans=min(ans,s);
		return;
	}
	if(v>=n)
	{
		return;
	}
	for(int i=m-dep;i<=h-1;i++)
	{
		for(int j=m-dep;j<=r-1;j++)
		{
			ads=2*i*j;
			if(dep==0)
			{
				ads+=j*j; 
			}
			if(s+ads>=ans)
			{
				break;
			}
			adv=i*j*j;
			if(v>n)
			{
				break;
			}
			dfs(i,j,s+ads,v+adv,dep+1);
		}
	}
 } 
signed main()
{
	scanf("%d%d",&n,&m);
	dfs(n,sqrt(n),0,0,0);
	printf("%d",ans);
}
2021/8/25 21:20
加载中...