社区讨论

本题加强版1分求调(玄1关)

P1731[NOI1999] 生日蛋糕参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mhju67mn
此快照首次捕获于
2025/11/04 08:34
4 个月前
此快照最后确认于
2025/11/04 08:34
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int mn=0x3f3f3f3f,M,N,vs[10005],ss[10005];
void work(int i,int r,int h,int v,int s){
	if(i>M){
		if(v==N)if(s<mn)mn=s;
		return;
	}
	if(s+2*(N-v)/r>=mn)return;
	if(v+vs[M-i+1]>N)return;
	if(s+ss[M-i+1]>N)return;
	for(int a=r-1;a>=(M-i+1);a--){
		for(int b=h-1;b>=(M-i+1);b--){
			work(i+1,a,b,v+a*a*b,s+2*a*b);
		}
	}
}
int main(){
	cin>>N>>M;
	vs[1]=1;
	ss[1]=1;
	for(int i=2;i<=M;i++){
		vs[i]=vs[i-1]+i*i*i;
		ss[i]=ss[i-1]+i*i;
	}
	for(int r=sqrt(N);r>=M;r--){
		for(int h=N/(r*r);h>=M;h--){
			work(2,r,h,r*r*h,r*r+2*r*h);
		}
	}
	if(mn!=0x3f3f3f3f)cout<<mn;
	else cout<<-1;
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...