Subtask #1的第一个点RE
查看原帖
Subtask #1的第一个点RE
761489
paibenjin楼主2024/8/4 11:20

这是我的代码

#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

2024/8/4 11:20
加载中...