BZOJ1005 HNOI2008 明明的煩惱

2021-07-26 07:43:48 字數 1030 閱讀 5680

自從明明學了樹的結構,就對奇怪的樹產生了興趣......給出標號為1到n的點,以及某些點最終的度數,允許在

任意兩點間連線,可產生多少棵度數滿足要求的樹?

第一行為n(0 < n < = 1000),

接下來n行,第i+1行給出第i個節點的度數di,如果對度數不要求,則輸入-1

乙個整數,表示不同的滿足要求的樹的個數,無解輸出031

-1-1

2兩棵樹分別為1-2-3;1-3-2

樹的prufer編碼

題解說的很清楚,不再贅述

#include using namespace std;

const int maxn = 1010;

const int mod = 1000000;

int n, d[maxn], tot, ans[maxn], len, m, prime[maxn], cnt, chk[maxn], num[maxn];

inline void init() }}

inline void solve(int q, int flag)

}inline void mul(int x)

inline void print()

}int main()

for( int i = 1 ; i <= n ; i++ ) }

if( tot > n - 2 ) return printf( "0\n" ), 0;

solve( n - 2, 1 );

solve( n - 2 - tot, -1 );

for( int i = 1 ; i <= n ; i++ ) solve( d[ i ], -1 );

for( int i = 1 ; i <= cnt ; i++ )

while( num[ i ]-- ) mul( prime[ i ] );

for( int i = 1 ; i <= n - 2 - tot ; i++ ) mul( m );

return print(), 0;

}

狡猾的商人 bzoj1202,HNOI2005

ac通道 分析 因為每月的總收入可以為正,也可以為負,所以要比較兩個區間是否相符,當且僅當它們邊界都相同時才能比較。我們設w i 表示第1 i個月的總收入與第1 fa i 1 個月的總收入之差,及第fa i i個月的總收入。如圖。若i 1,j在同乙個集合中,則第i j個月的總收入為w j w i 1...

bzoj1005 hnoi2008 明明的煩惱

time limit 1 sec memory limit 162 mb submit 3157 solved 1262 submit status discuss 自從明明學了樹的結構,就對奇怪的樹產生了興趣.給出標號為1到n的點,以及某些點最終的度數,允許在任意兩點間連線,可產生多少棵度數滿足要...

BZOJ 1005 HNOI2008 明明的煩惱

給定一棵n個節點的樹的節點的度數,其中一些度數無限制,求可以生成多少種樹。用到了prufer數列的知識。度娘 prufer數列 是由有乙個對於頂點標過號的樹 標號樹 轉化來的數列,點數為n的樹轉化來的prufer數列長度為n 2。由heinz prufer於1918年在證明cayley定理時首次提出...