bzoj1197: [HNOI2006]花仙子的魔法

来源:互联网 发布:怎么看淘宝店铺销量 编辑:程序博客网 时间:2024/04/27 13:59

传送门
题目废话太多。
就是n个球最多能把空间划分成多少个部分。
尝试下n = 3的情况想象下……再看下面的内容……

对n维区域用m个求划分,答案记为f(n, m)

对于第m个球,那么最优情况是它与所有球相交(显然成立)
然后相交时球是n维的,球面是n-1维的,球面与球面的交集是n - 2维的
(自己脑洞N=3的情况)
其它球面来划分这个球面,相当于把n - 1维区域用m - 1个n - 2维的平面来划分(很正确呀)
而n - 2维的这种平面必然是n - 2维的球,因为是球面与球面相交嘛(一维空间的球是平面,特此声明)

每个区域都对应着一个n维区域
最多可以把球面划分成f(n - 1, m - 1)个区域
那么这个球内就有f(n - 1, m - 1)个空间
还要加剩下的球~就是f(n, m - 1)

立即推出:f(n, m) = f(n - 1, m - 1) + f(n, m - 1)
边界条件咱就不说了……YY下就出来了

至于为啥这是最优的我也不知道

var  n,m,i,j:longint;  f:array [0..25,0..105] of int64;begin  read(m,n);  f[0,0]:=1;  for j:=1 to m do f[0,j]:=2;  for i:=1 to n do begin    f[i,0]:=1;    for j:=1 to m do f[i,j]:=f[i,j-1]+f[i-1,j-1];  end;  write(f[n,m]);end.
0 0
原创粉丝点击