NOIP校內模擬 T1 排列樹(樹上的組合數)

2021-08-30 11:41:28 字數 792 閱讀 7634

假設當前節點now的子樹大小為size

now的方案數是他的所有兒子內部如何分配的方案數相乘得到的 這個可以遞迴計算

不過對於那麼多兒子之間 他們分配走的標號可能是不同的 比如now將把2,3,4,5分配給他的子樹,那有可能是2,3;4,5 也有可能是2,4; 3,5這樣分

所以還得套個組合數 c(size,size') size需要一直減下去

#include#define n 100005

#define ll long long

using namespace std;

const ll mod=998244353;

templateinline void read(t &x)

struct node

edge[2*n];

int n,first[n],tot;

inline void addedge(int x,int y)

int father[n];

ll size[n];

void dfs1(int now,int fa)

}ll fac[n],inv[n];

inline int qpow(ll x,ll y)

return ans;

}void init(int n)

inline ll c(int m,int n)

int dfs2(int now)

return ans;

}int main()

{ read(n);

for(int i=1,x,y;i

2020 9 3 NOIP模擬賽 T1 排列

題目鏈結 這是noip良心模擬賽的第一題 求對於任意的 i 滿足 p i i not k 的排列數。n,k le 10 5 首先 k 0 直接錯排數。k 1 考慮容斥。假設我們能算出來 g i 表示欽定 i 個位置不合法的方案數,那麼答案應該是 sum n 1 ig i n i 注意不是二項式反演,...

NOIP校內模擬 T1 性感 手槍(dfs)

vis是乙個三維陣列 vis x y 0 代表第一次搜到原圖座標 x,y 的x 虛 座標,vis x y 1 代表第一次搜到原圖座標 x,y 的y 虛 座標,vis x y 2 代表是否搜過 這樣既可以判斷什麼時候進入了無限走狀態,又可以判斷是否死迴圈了 往前走一步又退回一步 include inc...

NOIP校內模擬 T1 性感 手槍(dfs)

vis是乙個三維陣列 vis x y 0 代表第一次搜到原圖座標 x,y 的x 虛 座標,vis x y 1 代表第一次搜到原圖座標 x,y 的y 虛 座標,vis x y 2 代表是否搜過 這樣既可以判斷什麼時候進入了無限走狀態,又可以判斷是否死迴圈了 往前走一步又退回一步 include inc...