P1731 [NOI1999] 生日蛋糕 hack1WA,哪位DAILAO帮调
  • 板块题目总版
  • 楼主zyx_Henry
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/9/26 19:40
  • 上次更新2024/9/26 21:22:42
查看原帖
P1731 [NOI1999] 生日蛋糕 hack1WA,哪位DAILAO帮调
1294257
zyx_Henry楼主2024/9/26 19:40
#include<bits/stdc++.h>
using namespace std;
int n,m,ans=INT_MAX;
int sum1[25];
int sum2[25];
void dfs(int layer,int r,int h,int s,int v)
{
	int i,j;
	if(s+sum2[m-layer+1]>=ans)
		return;
	if(sum1[m-layer+1]>v)
		return;
	if(s+2*v/r>=ans)
		return;
	if(layer>m)
	{
		if(v==0)
			ans=min(s,ans);
		return;
	}
	for(i=m-layer+1;i<h;++i)
	{
		for(j=m-layer+1;j<r;++j)
		{
			if(layer==1)
				dfs(layer+1,j,i,s+j*j+2*j*i,v-j*j*i);
			else
				dfs(layer+1,j,i,s+2*j*i,v-j*j*i);
		}
	}
}
int main()
{
	int i;
	scanf("%d %d",&n,&m);
	for(i=1;i<=m;++i)
	{
		sum1[i]+=sum1[i-1]+i*i*i;
		sum2[i]+=sum2[i-1]+2*i*i;
	}	
	dfs(1,sqrt((n-sum1[m-1])*1.0/m)+1,(n-sum1[m-1])*1.0/m/m+1,0,n);
	printf("%d",ans);
	return 0;
}
2024/9/26 19:40
加载中...