日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

AtcoderGrandContest 005 F. Many Easy Problems

發(fā)布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 AtcoderGrandContest 005 F. Many Easy Problems 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

$ >AtcoderGrandContest \space 005 F. ?Many?Easy?Problems<$

題目大意 :
有一棵大小為 \(n\) 的樹,對于每一個 \(k \in[1,n]\) ,求出在所有在樹中選 \(k\) 個點的方案對應的包含這 \(k\) 個點的最小聯(lián)通塊大小之和

\(1 \leq n \leq 2 \times 10^5\)

解題思路 :

容易發(fā)現(xiàn),對于一組選取方案,包含它的最小聯(lián)通塊是唯一的,不妨考慮每一個點對這個聯(lián)通塊的貢獻.

觀察發(fā)現(xiàn),一個點如果在一個最小聯(lián)通塊中,當且僅當有兩個選取點的簡單路徑經(jīng)過它

那么點 \(u\)\(k\) 個點的貢獻就是 \(C_n^k -\sum_{v} C_{sz[v]}^k-C_{n-sz[u]}^k\)

觀察發(fā)現(xiàn)這個式子只和 \(sz\) 有關,不妨設 \(tot[i]\) 表示 \(sz[u]=i\) 的點的數(shù)量

考慮除根以外的每一個點只會在其父親計算的時候被減去一個 \(C_{sz[u]}^k\) ,同時每一種 \(sz[u]\) 都會在計算大小為 \(n-sz[u]\) 的子樹的時候被減去一次

所以 \(C_{sz[u]}^k\) 的被計算次數(shù)是 \(tot[sz[u]] + tot[n-sz[u]]\)

那么最終答案的式子就是 \(Ans_j =n \times C_n^j -\sum_{i=1}^n (tot[i]+tot[n-i])\times C_i^j\)

\(inv[i]\) 表示 \(i!\) 關于 \(Mod\) 的逆元,將后面的組合數(shù)拆開來可以得到

\(Ans_j =n \times C_n^j -\sum_{i=1}^n (tot[i]+tot[n-i])\times i! \times inv[j] \times inv[i-j]\)

\(A[i] = (tot[i]+tot[n-i])\times i!\) ,則 \(Ans_j = n \times C_n^j \times inv[j] - \sum_{i=1}^nA[i]\times inv[i-j]\), 后者 \(NTT\) 進行計算即可


/*program by mangoyang*/ #pragma GCC optimize("Ofast") #pragma GCC optimize("inline") #include<bits/stdc++.h> #define inf (0x7f7f7f7f) #define Max(a, b) ((a) > (b) ? (a) : (b)) #define Min(a, b) ((a) < (b) ? (a) : (b)) typedef long long ll; using namespace std; template <class T> inline void read(T &x){int f = 0, ch = 0; x = 0;for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = 1;for(; isdigit(ch); ch = getchar()) x = x * 10 + ch - 48;if(f) x = -x; }#define int llconst int N = 1605005, L = 200005, P = 924844033, G = 5; vector<int> g[N]; int inv[N], iv[N], s[N], f[N], tot[N], sz[N], js[N], n; inline int Pow(int a, int b){int ans = 1;for(; b; b >>= 1, a = a * a % P)if(b & 1) ans = ans * a % P;return ans; } namespace NTT{int rev[N];inline int Getrev(int ned){int lg = 0, len = 1;for(; len <= ned; len <<= 1, lg++);for(int i = 0; i < len; i++) rev[i] = (rev[i>>1] >> 1) | ((i & 1) << (lg - 1));return len; }inline void DFT(int *A, int len, int type){for(int i = 0; i < len; i++) if(i < rev[i]) swap(A[i], A[rev[i]]);for(int k = 2; k <= len; k <<= 1){int w = Pow(G, (P - 1) / k); if(type == -1) w = Pow(w, P - 2);for(int i = 0; i < len; i += k){int now = 1;for(int j = i; j < i + (k >> 1); j++, (now *= w) %= P){int x = A[j], y = (now * A[j+(k>>1)]) % P;A[j] = (x + y) % P, A[j+(k>>1)] = (x - y + P) % P;}} }if(type == -1){int now = Pow(len, P - 2);for(int i = 0; i < len; i++) (A[i] *= now) %= P;}}inline void Times(int *A, int *B, int lena, int lenb){int len = Getrev(lena + lenb + 1);DFT(A, len, 1), DFT(B, len, 1);for(int i = 0; i < len; i++) A[i] = A[i] * B[i] % P;DFT(A, len, -1);} } inline void dfs(int u, int fa){sz[u] = 1, f[u] = fa;for(int i = 0; i < g[u].size(); i++)if(g[u][i] != fa) dfs(g[u][i], u), sz[u] += sz[g[u][i]]; } inline int C(int x, int y){ return js[x] * inv[y] % P * inv[x-y] % P; } signed main(){read(n), js[0] = 1, inv[0] = iv[L] = 1;for(int i = 1; i <= n; i++){js[i] = js[i-1] * i % P;iv[L-i] = inv[i] = Pow(js[i], P - 2);}for(int i = 1, x, y; i < n; i++){read(x), read(y);g[x].push_back(y), g[y].push_back(x);}dfs(1, 0);for(int i = 2; i <= n; i++) tot[sz[i]]++;for(int i = 1; i <= n; i++) s[L+i] = (tot[i] + tot[n-i]) * js[i] % P;NTT::Times(s, iv, L + n + 1, L + n + 1);for(int i = 1; i <= n; i++){int A = n * C(n, i) % P;int B = inv[i] * s[2*L+i] % P;printf("%lld\n", ((A - B) % P + P) % P);}return 0; }

轉載于:https://www.cnblogs.com/mangoyang/p/9723310.html

總結

以上是生活随笔為你收集整理的AtcoderGrandContest 005 F. Many Easy Problems的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人综合婷婷国产精品久久 | 密臀av在线播放 | 一级特黄aaa | 美女被捅个不停 | 国产av无码专区亚洲av麻豆 | 天天躁日日躁狠狠躁伊人 | 国产二级一片内射视频播放 | 黄瓜视频在线免费看 | 性爱一级视频 | 久久人妻少妇嫩草av无码专区 | 国产乱妇4p交换乱免费视频 | 国产伦精品一区二区三区在线观看 | 精产国品一二三区 | 动漫美女被吸乳奶动漫视频 | 亚洲天堂va | 亚洲三区在线播放 | 色老头网址 | 久久久久久伦理 | 波多野结衣一区二区三区在线 | 91秦先生在线播放 | 清纯唯美亚洲色图 | 国产一级免费片 | 国产一级一片 | 活大器粗np高h一女多夫 | 国产麻豆视频 | 色网址在线 | 丰满少妇xbxb毛片日本 | 国产一区二区三区观看 | 日韩精品一区二区三区四区五区 | 伊人黄| 免费国产91 | 青青草免费在线观看视频 | 国产在线观看h | 日韩特黄一级片 | 中国黄色1级片 | 欧美第一页草草影院 | 综合色婷婷一区二区亚洲欧美国产 | 欧美老女人性生活 | 欧美日韩久久婷婷 | 亚洲一区第一页 | 国产精品亚洲一区二区无码 | 欧洲美女毛片 | 97人人模人人爽人人少妇 | 人妻少妇一区二区 | 国产三级中文字幕 | 肉感丰满的av演员 | 日韩精美视频 | 特级西西人体wwwww | 亚欧在线播放 | 久久av网| 麻豆tube| 亚洲爱爱网站 | 中国亚洲女人69内射少妇 | 91午夜交换视频 | 色综合天天综合网天天看片 | 美女屁股眼视频免费 | 免费日批网站 | 亚洲色图少妇 | 人人澡澡人人 | 国产精品久久网 | 尤物视频免费在线观看 | 非洲黄色大片 | 91综合国产 | 夜夜嗨老熟女av一区二区三区 | 久久国产人妻一区二区免色戒电影 | 手机在线看片国产 | 国产又粗又黄又爽又硬的视频 | 国产美女免费视频 | 91国自啪| 日韩中文字幕在线 | 国产精品毛片一区二区三区 | 亚洲免费在线观看视频 | 麻豆一区在线 | 久草日韩| 国产a视频免费观看 | 日韩中文字幕观看 | 性爱视频在线免费 | 欧美午夜精品久久久 | 亚洲爱爱图 | 久久桃花网 | 被绑在床强摁做开腿呻吟 | 闺蜜张开腿让我爽了一夜 | 狠狠干夜夜操 | 成人va视频| 中文字幕视频一区二区 | 国产成人综合欧美精品久久 | 免费网站观看www在线观看 | 日本特级黄色录像 | 国产毛片一区二区 | 久草免费在线视频 | 日韩色婷婷 | 欧美成人一级片 | 神马一区二区三区 | 成人性生交大片免费看vrv66 | 日本一区二区在线不卡 | 国产成人免费在线 | 久久久久久少妇 | 黄色天堂av | 国产成人三级在线 |