首页 > 代码库 > BZOJ 1087
BZOJ 1087
var f:array[0..10,0..90,0..600] of int64; a:Array[0..600] of longint; count:array[0..600] of longint; ans:int64; n,m:longint; procedure init;var t,i:longint;begin readln(n,m); fillchar(count,sizeof(count),0); for i:=0 to (1 shl n)-1 do if (i and (i shl 1) =0) and (i and (i shr 1) = 0) then begin inc(a[0]); a[a[0]]:=i; t:=i; while t>0 do begin t:=t- (t and -t); inc(count[a[0]]); end; end;end;procedure main;var i,j,k,l:longint;begin fillchar(f,sizeof(f),0); for i:=1 to a[0] do f[1,count[i],a[i]]:=1; for i:=2 to n do for j:=0 to m do if i*n>=j then for k:=1 to a[0] do if count[k]<=j then for l:=1 to a[0] do if ( count[l]<=j) and ( (a[k] shl 1) and a[l]=0 ) and ( (a[k] shr 1) and a[l]=0 ) and ( a[k] and a[l]=0) then f[i,j,a[k]]:=f[i-1,j-count[k],a[l]]+f[i,j,a[k]]; for i:=1 to a[0] do ans:=ans+f[n,m,a[i]]; writeln(ans);end;begin init; main;end.
BZOJ 1087
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。