社区讨论
本题加强版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 条回复,欢迎继续交流。
正在加载回复...