BZOJ-1005-明明的烦恼
描述
自從明明學了樹的結構,就對奇怪的樹產生了興趣…… 給出標號為1到N的點,以及某些點最終的度數,允許在任意兩點間連線,可產生多少棵度數滿足要求的樹?
分析
想不出來, 就看了網上的題解, 學到了一種叫 Purfer Sequence 的序列, 一棵樹對應著唯一一個purfer sequence序列. 在這個序列中一個結點的出現次數+1就代表著其度數.
Purfer Sequence詳解
http://www.cnblogs.com/zhj5chengfeng/archive/2013/08/23/3278557.html
感覺在處理與結點度數有關的樹的計數問題時會非常好用.題目詳解
http://www.cnblogs.com/noip/archive/2013/03/10/2952520.html用分解質因數的方法避免與組合數有關的題目中使用高精除.
基本思想是在計算階乘時分組相乘, 比如說計算n的階乘可以分解成i的幾次方, 分組: 1 .. i, i+1 .. 2i, …, i*(i-1)+1 .. i*i, …, n. 首先每組的最后一個元素都含有至少一個i, 共有n/i組, 每個數中的i只統計一個, 共n/i個, 然后重新分組, 1 .. i*i, i*i+1 .. i*i*i, … 同樣每組含有至少一個i*i, 還是只統計一個i*i——因為要避免和剛才的統計重復. 有n/(i*i)組, i的次數就加n/(i*i). 依此類推…
該部分代碼
for(int i = 1; prime[i] <= num; i++) {int p = prime[i], j = p;while(j <= num) {A[p] += num/j;j *= p;}}代碼
https://code.csdn.net/snippets/616161
總結
以上是生活随笔為你收集整理的BZOJ-1005-明明的烦恼的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ-几道比较有趣的题目
- 下一篇: BZOJ-1053-反素数ant