YbtOJ 10053 合影隊形

2022-06-13 16:06:11 字數 888 閱讀 4351

將被敬仰的人向敬仰他的人連一條有向邊,那麼如果存在環顯然無解。

否則由於每個點入度最多為 \(1\),所以形成了一棵樹形結構。

設 \(f[x]\) 表示 \(x\) 子樹內排序的方案數。考慮加入一棵子樹時,\(x\) 依然排在最右,剩餘位置填給任意的人,方案數為

\[f'[x]=f[x]\times f[v]\times \binom

\]時間複雜度 \(o(n\log \operatorname)\)。

由於出題人很不良心地要求每次模數都不一樣,所以必須每次預處理階乘和逆元。

#include using namespace std;

typedef long long ll;

const ll n=500010;

ll q,n,m,mod,tot,head[n],deg[n],cnt[n],size[n],fac[n];

ll ans,f[n];

void prework()

struct edge

e[n];

void add(ll from,ll to)

bool topsort()

ll c(ll n,ll m)

void dfs(ll x)

size[x]++;

}int main()

if (!topsort())

ll s=0;

for (ll i=1;i<=n;i++)

if (!deg[i])

printf("%lld\n",ans);

} return 0;

}

雷達裝置 Ybtoj

有n nn個建築物,第i ii個建築物在笛卡爾座標系上的座標為 xi yi x i,y i xi y i 你需要在x xx軸上安裝一些雷達,每個雷達的偵察半徑均為d dd,要求每個建築物都至少被乙個雷達偵測到,求最少要安裝幾個雷達。第一行兩個正整數n,d n,dn,d。接下來n nn行,第i ii行...

YBTOJ 電路維修

思路 乍一看這題,沒有bfs的頭緒 但是,我們想到了spfa 我們可以把地圖中的每個點看成方格,這樣就有 n 1 m 1 個方格 如果兩點之間有線聯通,那它們之間的邊權就是0,否則就為1 然後spfa就可以了 include include include using namespace std i...

YBTOJ 守衛挑戰

有 n 項任務,有乙個數 k 每一項任務成功的概率是 p i 這裡與原題目不同,原題目是百分之 p i 這裡相當於 p i frac 成功後會使 k 加上 a i 問至少成功 l 次且最後 k leq0 的概率是多少。資料範圍 0 leq k leq2000,0 leq l leq n leq 20...