題意可以簡化為用 $[1,n]$ 的數,組成乙個完全二叉樹,使其滿足小根堆性質,求方案數。
令 $f_i$ 表示在 $i$ 點的方案數,$s_i$ 表示 $i$ 的子節點個數(包括 $i$),於是得出遞推式:
$$f_i=c^_} \times f_ \times f_
$$由於 bzoj 上 $n>m$(可能),所以需要用 lucas 定理。
namespace lzx
base=base*base%mod;
power>>=1;
}return res;
}int math_c(int n,int m,int p)
int math_lucas(int n,int m,int p)
if(m>n)
return math_c(n%p,m%p,p)*math_lucas(n/p,m/p,p)%p;
}int _main()
fill(s+1,s+n+1,1);
for(int i=n;i>=2;i--)
fill(f+n+1,f+n*2+2,1);
for(int i=n;i;i--)
printf("%lld\n",f[1]);
return 0;
}}
題解 P2606 ZJOI2010 排列計數
題目鏈結 題目大意 求 1 n 的排列 p 中,有多少個排列滿足 forall i in 2,n p i p rfloor 對給定質數 m 取模。分析 p i p rfloor 反過來 forall x,p x,那麼問題變成一棵 n 個節點的完全二叉樹,將數 1 n 分配給每乙個節點,使得每個父節點...
洛谷 2606 ZJOI2010 排列計數
題目描述 稱乙個1,2 n 1,2,n 1,2,n的排列p1,p2.pn p 1,p 2.p n p1 p2 pn 是magic的,當且僅當2 i n 2 i n 2 i n 時,p i pi 2 p i p pi pi 2 計算1,2 n1,2,n 1,2,n的排列中有多少是magic的,答案可能...
ZJOI2010 排列計數
不是很懂為什麼洛谷上這題標籤有數字dp,於是我被騙來做這道題。不過上一道題也是一樣,其實也是組合數學。題意其實是求1.n1.n 1.n 的排列中有多少個可以構成小根堆。f i f i f i 表示以i ii為根的樹的方案數,l,r l,rl,r是左,右子樹結點個數,那麼有 f i f l f r c...