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

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

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

      【題解】Luogu P4321 隨機漫游

      看到 \(n\le 18\),基本上是要做狀壓的。考慮進行預處理,然后在較小的復雜度內回答詢問。設 \(f_{S,u}\) 表示當前走完了 \(S\) 中的點,現在在 \(u\) 點(\(u\in S\)),走完剩下的點的期望步數。于是有方程:

      \[f_{S,u}=1+\frac{1}{d_u}\sum f_{S\cup\{v\},v} \]

      其中 \((u,v)\) 是一條邊,\(d_u\) 表示 \(u\) 的度數。

      考慮 \(S\)\(S\cup\{v\}\) 的關系,顯然只有兩種情況,分別是 \(S=S\cup\{v\}\)\(S\subsetneqq S\cup\{v\}\)。于是就可以倒著掃 \(S\),對于每個 \(S\) 做高斯消元了。

      考慮輸出答案,題目的要求其實就是要將 \(c\) 中的點全部走完。設 \(c\) 中的點構成的集合為 \(S\),起點為 \(u\),那么答案即為 \(f_{(\complement S)\cup\{u\},u}\)。總時間復雜度為 \(O(2^nn^3+m)\)

      #include<bits/stdc++.h>
      #define ll long long
      #define il inline
      #define pb push_back
      using namespace std;
      namespace asbt{
      namespace cplx{bool begin;}
      const int mod=998244353;
      int n,m,q,a[25][25];
      int f[(1<<18)+5][25];
      vector<int> e[25];
      il int qpow(int x,int y){
      //	cout<<x<<" "<<y<<"\n";
      	int res=1;
      	while(y){
      		if(y&1){
      			res=res*1ll*x%mod;
      		}
      		y>>=1,x=x*1ll*x%mod;
      	}
      	return res;
      }
      namespace cplx{
      	bool end;
      	il double usdmem(){return (&begin-&end)/1048576.0;}
      }
      int main(){
      //	ios::sync_with_stdio(0),cin.tie(0);
      	cin>>n>>m;
      	for(int i=1,u,v;i<=m;i++){
      		cin>>u>>v;
      		e[u].pb(v),e[v].pb(u);
      	}
      	int uS=(1<<n)-1;
      	for(int S=uS-1;S;S--){
      		for(int i=1;i<=n;i++){
      			for(int j=1;j<=n+1;j++){
      				a[i][j]=0;
      			}
      		}
      		for(int u=1,tmp;u<=n;u++){
      			if(S>>(u-1)&1){
      				a[u][u]=mod-1;
      				tmp=qpow(e[u].size(),mod-2);
      				for(int v:e[u]){
      					if(S>>(v-1)&1){
      						a[u][v]=tmp;
      					}
      					else{
      						a[u][n+1]=(a[u][n+1]-f[S|1<<(v-1)][v]+mod)%mod;
      					}
      				}
      				a[u][n+1]=(a[u][n+1]*1ll*tmp+mod-1)%mod;
      			}
      		}
      		for(int i=1,cur,tmp;i<=n;i++){
      			if(S>>(i-1)&1){
      				tmp=0;
      				for(int j=i;j<=n;j++){
      					if(S>>(j-1)&1){
      						if(tmp<a[j][i]){
      							tmp=a[j][i],cur=j;
      						}
      					}
      				}
      				swap(a[i],a[cur]);
      				tmp=qpow(a[i][i],mod-2);
      				for(int j=1;j<=n;j++){
      					if(i!=j&&(S>>(j-1)&1)){
      						for(int k=i+1;k<=n+1;k++){
      							if((S>>(k-1)&1)||k==n+1){
      								a[j][k]=(a[j][k]-a[j][i]*1ll*a[i][k]%mod*tmp%mod+mod)%mod;
      							}
      						}
      					}
      				}
      			}
      		}
      		for(int i=1;i<=n;i++){
      			if(S>>(i-1)&1){
      				f[S][i]=a[i][n+1]*1ll*qpow(a[i][i],mod-2)%mod;
      			}
      		}
      	}
      	cin>>q;
      	while(q--){
      		int num,S=0,u;
      		cin>>num;
      		while(num--){
      			cin>>u;
      			S|=1<<(u-1);
      		}
      		cin>>u;
      		cout<<f[(uS^S)|1<<(u-1)][u]<<"\n";
      	}
      	return 0;
      }
      }
      int main(){return asbt::main();}
      
      posted @ 2025-03-08 08:40  zhangxy__hp  閱讀(9)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲国产精品毛片在线看| 亚洲国产成人AⅤ片在线观看| 国产成人无码精品亚洲| 精品乱人伦一区二区三区| 久久国产一区二区日韩av| 欧美高清一区三区在线专区| 日本中文一区二区三区亚洲| 91午夜福利在线观看精品| 国产精品自拍中文字幕| 成人性生交片无码免费看| 丰满人妻一区二区三区色| 亚洲熟妇自偷自拍另欧美| 午夜一区二区三区视频| 美腿丝袜亚洲综合在线视频| 四虎永久在线精品无码视频| 亚洲av日韩av一区久久| 九九热在线视频精品免费| 亚洲人成网站色7799| 韩国主播av福利一区二区| 宝贝腿开大点我添添公口述视频| 欧美va天堂在线电影| 亚洲综合在线一区二区三区| 九九热在线免费精品视频| 亚洲欧洲无码av电影在线观看| 亚洲一区二区三区自拍偷拍| 99久久婷婷国产综合精品青草漫画| 亚洲久悠悠色悠在线播放| 欧洲亚洲成av人片天堂网| 欧乱色国产精品兔费视频| 肉大捧一进一出免费视频| 亚洲av色香蕉一二三区| 丰满人妻跪趴高撅肥臀| 又大又硬又爽免费视频| 中文字幕人妻av12| 亚洲无线观看国产精品| 国产精品老熟女一区二区| 国产中文字幕精品免费| 石首市| 玩弄放荡人妻少妇系列| 亚洲精品一区二区麻豆| 黑人好猛厉害爽受不了好大撑 |