社区讨论

求大神指教

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

讨论操作

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

当前回复
4 条
当前快照
1 份
快照标识符
@mi4eg4fw
此快照首次捕获于
2025/11/18 17:57
4 个月前
此快照最后确认于
2025/11/18 17:57
4 个月前
查看原帖
CPP
var
  n,m,q,l,s:longint;
  r,h,max1,max2:array[1..20] of longint;
procedure dfs(k:longint);
var
  i,j:longint;
begin
  if (k>m) and (l=0) then begin
    s:=s+sqr(r[1]);
    if s<q then q:=s;
exit
CPP
  end;
  for i:=max1[k]-1 downto 1 do begin
    max2[1]:=trunc(sqrt(n));
    for j:=max2[k]-1 downto 1 do begin
      max1[k]:=i;
      max2[k]:=j;
      r[k]:=i;
      h[k]:=j;
      l:=l-sqr(r[k])*h[k];
      s:=s+2*r[k]*h[k];
      dfs(k+1);
      s:=s-2*r[k]*h[k];
      l:=l+sqr(r[k])*h[k];
    end;
  end;
end;
begin
  //assign(input,'birth.in');reset(input);
  //assign(output,'birth.out');rewrite(output);
  readln(n);
  readln(m);
  q:=maxlongint;
  max1[1]:=trunc(sqrt(n));
  max2[1]:=trunc(sqrt(n));
  l:=n;
  dfs(1);
  write(q);
  close(input);close(output);
end.

回复

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

正在加载回复...