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

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

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

      P5107 能量采集

      觀察數(shù)據(jù)范圍發(fā)現(xiàn) \(n\) 很小而 \(t\) 很大,于是我們想到矩陣快速冪。我們可以直接建 \(n \times n\) 的轉移矩陣 \(A\),設 \(u\) 的出邊為 \(d_u\) 條,邊 \((u,v)\) 共有 \(cnt_{(u,v)}\) 條(注意重邊要計算多次即 \(cnt_{(u,v)}\) 可能大于一),則 \(A_{v,u} \equiv \dfrac{cnt_{(u,v)}}{d_u} \pmod {998244353}\),再定義 \(n \times 1\) 的初始矩陣 \(B\) 其中 \(B_{i,1} \equiv a_i \pmod {998244353}\)。則詢問 \(t\) 的答案即為 \(A^t \times B\)。此時時間復雜段為 \(\mathcal{O}(qn^3 \log t)\)卡卡常能過不太能過。

      我們考慮進行優(yōu)化。我們考慮快速冪的過程,據(jù)一個例子 \(t=13\),則我們實際計算的是 \(A^8 \times A^4 \times A^1 \times B\)。而矩陣乘法具有結合律,我們可以優(yōu)化計算順序:\(A^8 \times (A^4 \times (A^1 \times B))\),我們發(fā)現(xiàn) \(A^{2^k}\)\(B\) 相乘的復雜度僅為 \(\mathcal{O}(n^2)\),而由于轉移矩陣是已知的,那么 \(A^{2^k}\) 是可以預處理的。于是我們成功把時間復雜度降為了 \(\mathcal{O}(n^3 \log t + qn^2 \log t)\),能過。

      // 火車頭
      const int mod=998244353;
      const int N=55;
      
      struct Matrix {
      	int n,m,a[N][N];
      	Matrix(int l=0,int c=0) {
      		n=l,m=c,memset(a,0,sizeof(a));
      		return ;
      	}
      	inline void init(int d) {
      		n=m=d,memset(a,0,sizeof(a));
      		for(int i=1;i<=d;i++) a[i][i]=1;
      		return ;
      	}
      	inline Matrix operator *(const Matrix &tmp) const {
      		Matrix res(n,tmp.m);
      		for(int i=1;i<=n;i++)
      			for(int j=1;j<=m;j++)
      				for(int k=1;k<=tmp.m;k++)
      					add(res.a[i][k],(ll)a[i][j]*tmp.a[j][k]%mod);
      		return res;
      	}
      };
      
      int n,m,q;
      vector<int> edge[N];
      Matrix ret[30],stat;
      
      inline ll quickpow(ll base,ll p) {
      	ll tmp=1;
      	for(;p;p>>=1) {
      		if(p&1) tmp=tmp*base%mod;
      		base=base*base%mod;
      	}
      	return tmp;
      }
      inline Matrix quickpow_matrix(ll p) {
      	Matrix tmp=stat;
      	for(int i=0;i<30;i++)
      		if((p>>i)&1) tmp=ret[i]*tmp;
      	return tmp;
      }
      
      int main() {
      	read(n),read(m),read(q);
      	stat=Matrix(n,1);
      	for(int i=1;i<=n;i++) read(stat.a[i][1]),edge[i].pb(i);
      	for(int i=1,u,v;i<=m;i++) read(u),read(v),edge[u].pb(v);
      	ret[0]=Matrix(n,n);
      	for(int i=1;i<=n;i++) {
      		ll c=quickpow(edge[i].size(),mod-2);
      		for(int v:edge[i]) add(ret[0].a[v][i],c);
      	}
      	for(int i=1;i<30;i++) ret[i]=ret[i-1]*ret[i-1];
      	for(int i=1,t;i<=q;i++) {
      		read(t);
      		Matrix res=quickpow_matrix(t);
      		ll ans=0;
      		for(int i=1;i<=n;i++) ans^=res.a[i][1];
      		write(ans%mod),_E;
      	}
      	return 0;
      }
      

      點個贊再走喵 qaq

      posted @ 2025-07-22 09:25  LinkCatTree  閱讀(15)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲情A成黄在线观看动漫尤物| 久热这里只精品视频99| 狠狠色噜噜狠狠狠狠2021| 好吊视频一区二区三区人妖| 极品尤物一区二区三区| 老司机精品影院一区二区三区| 视频一区二区三区四区久久| 国产成人亚洲精品自产在线| 亚洲中文字幕av天堂| 2020国产欧洲精品网站| 日韩成人福利视频在线观看| 国产精品一区二区久久精品无码| 国内不卡不区二区三区| 河北真实伦对白精彩脏话| 高清有码国产一区二区| 国产偷国产偷亚洲清高动态图| 亚洲日本中文字幕乱码中文 | 临潭县| 亚洲综合一区二区国产精品| 久久精品国产亚洲av麻豆软件| 欧洲精品色在线观看| 中文字幕va一区二区三区| 久久久亚洲欧洲日产国码aⅴ| 玩弄放荡人妻少妇系列| 无码内射成人免费喷射| 国产成人黄色自拍小视频| 哈巴河县| 日韩一区二区三区日韩精品| 日韩中文字幕有码av| 中文字幕在线精品人妻| 欧美性猛交xxxx免费看| 欧美黑人添添高潮a片www| 大尺度国产一区二区视频 | 亚洲gay片在线gv网站| 久久精品国产99国产精品澳门| 国产边打电话边被躁视频| 国产免费AV片在线看| 日韩中文字幕v亚洲中文字幕| 使劲快高潮了国语对白在线| 亚洲免费人成视频观看| 内射老阿姨1区2区3区4区|