NOIP模擬 排列樹(組合數學)

2021-08-30 11:26:38 字數 829 閱讀 1550

做這道題的時候真的難受,屬於知道他考你什麼但就是不知道怎麼做,令人蛋疼啊。。。。。

題意大概就是求拓撲排序的方案數,然額太菜了寫不出來。。。。。。

對於樹上每個節點,記錄他的size,對於根節點,他的編號一定是1,因為子節點的編號一定比父節點大,就類似於一種偏序關係,考慮每個節點分配的編號數就是他的size,所以用組合數學求出方案數,每個子樹的方案就是這個式子:

其中k表示已經考慮的子節點。最後統計f[1]即可。

#includeusing namespace std;

typedef long long ll;

const ll maxn=1e5+50;

const ll maxm=2e5+10;

const ll mod=998244353;

ll n,cnt;

ll head[maxn],siz[maxn];

ll nxt[maxm],to[maxm];

ll contri[maxn];

ll jc[maxn],incjc[maxn];

ll read()

void add(ll x,ll y)

ll mul(ll x,ll y)

ll ksm(ll a,ll b,ll c)

return ans;

}void pre()

ll c(ll x,ll y)

void dfs(ll u,ll f)

siz[u]++;

}int main()

dfs(1,-1);

cout<

return 0;

}

NOIP模擬 排隊(組合數學)

在成都某中學有m個男生與n個女生排隊,這個學校的女生比較古怪,從某個位置 包含這個位置 開始往前數,男生的數量超過了女生的數量,女生會感覺不安全,於是會大叫起來,為了構建和諧校園,安排隊伍時應該避免這樣的情況。請你計算出不會引發尖叫的排隊方案的概率。排隊方案不同定義 當且僅當某個某個位置人不一樣,如...

排列 組合數學

定義 從n個不同的元素中,取出m個不同元素,按照順序排成一列,叫做從n個元素取出m個元素的乙個排列。我們將從n個不同的元素取出m個元素所得到得不同排列數,叫做從n個元素取出m個元素的排列數 記為a n,m 其中n m a n,m n n 1 n m 1 n n m 定義 n個不同元素中取m個不同元素...

排列與組合 組合數學

note 把物件排成一條線。用 p n,r 表示 n 元素集合的 r 排列的數目,則 eg 對於集合,則p n,r 中的n 3,假設取r 3,則p 3,3 3 2 1 6,即abc acb bac bca cab cba這6種。note 把物件排成乙個圓。設s是n元素集合。集合s的乙個組合通常表示集...