<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      CF1707D Partial Virtual Trees 題解

      CF1707D Partial Virtual Trees 題解


      知識點

      樹形 DP,二項式反演,容斥。

      分析

      容斥

      考慮先處理容斥的部分,也就是把集合關系中的 \(\subsetneq\) 轉為 \(\subseteq\),這里需要用到容斥和反演。

      設:

      • \(G(k)\) 表示題目要求的答案。
      • \(F(k)\) 表示把題目要求集合關系中的 \(\subsetneq\) 轉為 \(\subseteq\) 后的答案。

      則有:

      \[F(i) = \sum_{j=1}^i {i\choose j} G(j) \\ \]

      實際組合意義:表示 \(i\)\(\subseteq\) 中選出 \(j\) 個轉為 \(\subsetneq\) 的。

      那么根據二項式反演,有:

      \[G(i) = \sum_{j=1}^i (-1)^{i-j} {i\choose j} F(j) \\ \]

      DP

      \(f_{u,i}\) 表示在 \(S_i\) 中仍有 \(u\) 子樹中的點的方案數,由于題目的特殊性質,要分兩種情況討論,其中第二種容易遺漏。

      \(u\)\(S_i\)

      \[\prod_{v\in son(u)} \sum_{j=0}^{i} f_{v,j} \\ \]

      暴力 \(O(n^3)\),前綴和優化至 \(O(n^2)\)

      \(u\) 不在 \(S_i\)

      發現此時在集合 \(son(u)\) 中只能有一個點 \(v_0\) 滿足 \(S_i\) 中有 \(v_0\) 子樹中的點,同時還要考慮 \(i\) 在哪個集合刪除,則有:

      \[\sum_{v_0\in son(u)} f_{v_0,i} \sum_{j=0}^{i-1} \prod_{v\in son(u),v\neq v_0} \sum_{k=0}^{j-1} f_{v,k} \\ \]

      暴力 \(O(n^5)\),前綴和、前后綴積優化至 \(O(n^2)\)

      \(F(i)\)

      注意最后求答案的時候不能簡單的把 \(f\) 拿來直接用,因為題目限定了 \(S_k = \set{1}\),所以要再 DP 一下。

      \[F(i) = \prod_{v\in son(rt)} \sum_{j=0}^{i-1} f_{v,j} \\ \]

      暴力 \(O(n^3)\),前綴和優化至 \(O(n^2)\)

      代碼

      //#define Plus_Cat ""
      #include<bits/stdc++.h>
      #define INF 0x3f3f3f3f
      #define ll long long
      #define RCL(a,b,c,d) memset(a,b,sizeof(c)*(d))
      #define FOR(i,a,b) for(int i(a);i<=(int)(b);++i)
      #define DOR(i,a,b) for(int i(a);i>=(int)(b);--i)
      #define tomax(a,...) ((a)=max({(a),__VA_ARGS__}))
      #define tomin(a,...) ((a)=min({(a),__VA_ARGS__}))
      #define EDGE(g,i,x,y) for(int i=(g).h[(x)],y=(g)[(i)].v;~i;y=(g)[(i=(g)[i].nxt)>0?i:0].v)
      #define main Main();signed main(){ios::sync_with_stdio(0);cin.tie(0),cout.tie(0);return Main();}signed Main
      using namespace std;
      constexpr int N(2e3+10);
      
      namespace IOEcat {
      	//Fast IO...
      } using namespace IOEcat;
      
      namespace Modular {
      	int Mod;
      	int C[N][N];
      	ll MOD;
      
      	//Modular...
      
      	int Pow(int a,int b=Mod-2) {
      		int res(1);
      		for(a%=Mod; b; b>>=1,tomul(a,a))if(b&1)tomul(res,a);
      		return res;
      	}
      
      	void Init(const int n=N-5) {
      		FOR(i,0,n) {
      			C[i][0]=1;
      			FOR(j,1,i)C[i][j]=add(C[i-1][j-1],C[i-1][j]);
      		}
      	}
      } using namespace Modular;
      
      int n,m;
      int F[N];
      int f[N][N];
      vector<int> g[N];
      
      void dfs(int u,int fa) {
      	for(const int &v:g[u])if(v^fa)dfs(v,u);
      	int tot(0);
      	static int son[N],sum[N];
      	for(const int &v:g[u])if(v^fa)son[++tot]=v;
      	f[u][0]=1;
      	FOR(i,1,m) {
      		/*DE("Update");*/
      		int cur(1);
      		static int pre[N];
      		FOR(j,pre[0]=1,tot)pre[j]=mul(pre[j-1],f[son[j]][i-1]);
      		DOR(j,tot,1)toadd(sum[son[j]],mul(pre[j-1],cur)),tomul(cur,f[son[j]][i-1]);
      		/*DE("Trans");*/
      		f[u][i]=1;
      		FOR(j,1,tot)tomul(f[u][i],f[son[j]][i]);
      		FOR(j,1,tot)toadd(f[u][i],mul(add(f[son[j]][i],Mod-f[son[j]][i-1]),sum[son[j]]));
      		toadd(f[u][i],f[u][i-1]);
      	}
      }
      
      signed main() {
      #ifdef Plus_Cat
      	freopen(Plus_Cat ".in","r",stdin),freopen(Plus_Cat ".out","w",stdout);
      #endif
      	I(n,Mod),m=n-1,MOD=((__int128)1<<64)/Mod,Init();
      	FOR(i,2,n) {
      		int u,v;
      		I(u,v),g[u].push_back(v),g[v].push_back(u);
      	}
      	for(const int &v:g[1])dfs(v,1);
      	FOR(i,1,m) {
      		F[i]=1;
      		for(const int &v:g[1])tomul(F[i],f[v][i-1]);
      	}
      	FOR(i,1,m) {
      		int ans(0);
      		FOR(j,1,i)(i^j)&1?toadd(ans,Mod-mul(C[i][j],F[j])):toadd(ans,mul(C[i][j],F[j]));
      		O(ans,' ');
      	}
      	return 0;
      }
      

      posted @ 2025-05-30 20:56  Add_Catalyst  閱讀(7)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲中文字幕伊人久久无码| 免费无码又爽又刺激网站直播| 精品人妻中文字幕av| 久热天堂在线视频精品伊人| 日韩人妖精品一区二区av| 亚洲国产一区二区三区亚瑟| 免费视频爱爱太爽了| 亚洲欧美色综合影院| 9久9久热精品视频在线观看 | 亚洲 欧洲 无码 在线观看| 精品国产午夜福利在线观看| 色综合网天天综合色中文| 精品国产粉嫩一区二区三区| 亚洲久悠悠色悠在线播放| 国产精品99中文字幕| 最新午夜男女福利片视频| 亚洲成人精品综合在线| 国产精品自在自线免费观看| 国产亚洲精品成人aa片新蒲金| 天堂网av成人在线观看| 九九久久精品国产免费看小说| 久久精品无码精品免费专区| 久久国产精品99久久蜜臀| 亚洲成人av高清在线| 国产v综合v亚洲欧美大天堂| 久久毛片少妇高潮| 国产亚洲精品自在久久vr| 亚洲国产精品久久久天堂麻豆宅男 | 无码囯产精品一区二区免费| 蜜桃av亚洲精品一区二区| 免费国产va在线观看| 日韩美女一区二区三区视频| 日本丰满熟妇videossexhd| 国产99视频精品免费专区| 人妻av中文字幕无码专区| 中国亚州女人69内射少妇| 亚洲一区二区偷拍精品| 玩弄放荡人妻少妇系列 | 国产精品露脸3p普通话| 文成县| 91国产自拍一区二区三区|