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

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

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

      【題解】Luogu P4569 [BJWC2011] 禁忌

      考慮如果暴力 DP,設 \(f_{i,j}\) 為當前的串長為 \(i\),在 AC 自動機的 \(j\) 節點的概率。轉移時枚舉在后面加的字符 \(k\),如果加上 \(k\) 后匹配上了一個禁忌串就直接回到根節點,同時給答案貢獻,否則就繼續匹配。\(len\)\(10^9\),時間復雜度會超標,于是矩陣加速。

      如果 \(j\) 節點可以貢獻給 \(k\) 節點,那就將轉移矩陣第 \(j\) 行第 \(k\) 列加上一個 \(\frac{1}{alphabet}\)。多開一行存答案,在需要累計答案時將貢獻加給答案。

      時間復雜度 \(O((\sum|T_i|)^3\log len)\)

      #include<bits/stdc++.h>
      #define ll long long
      #define il inline
      
      using namespace std;
      namespace asbt{
      namespace cplx{bool begin;}
      int n,m,tr[80][30];
      int tot,fail[80];
      double ab;
      bool end[80];
      string s;
      queue<int> q;
      struct juz{
      	double mat[80][80];
      	juz(){
      		for(int i=0;i<=tot;i++){
      			for(int j=0;j<=tot;j++){
      				mat[i][j]=0;
      			}
      		}
      	}
      	il double*operator[](int x){
      		return mat[x];
      	}
      	il juz operator*(juz x)const{
      		juz res;
      		for(int i=0;i<=tot;i++){
      			for(int j=0;j<=tot;j++){
      				for(int k=0;k<=tot;k++){
      					res[i][j]+=mat[i][k]*x[k][j];
      				}
      			}
      		}
      		return res;
      	}
      }bas;
      il juz qpow(juz x,int y){
      	juz res;
      	for(int i=0;i<=tot;i++){
      		res[i][i]=1;
      	}
      	while(y){
      		if(y&1){
      			res=res*x;
      		}
      		y>>=1,x=x*x;
      	}
      	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>>ab;
      	for(int i=1,p;i<=n;i++){
      		cin>>s;
      		p=0;
      		for(int j=0,d;j<s.size();j++){
      			d=s[j]-'a';
      			if(!tr[p][d]){
      				tr[p][d]=++tot;
      			}
      			p=tr[p][d];
      		}
      		end[p]=1;
      	}
      	for(int i=0;i<ab;i++){
      		if(tr[0][i]){
      			q.push(tr[0][i]);
      		}
      	}
      	while(q.size()){
      		int u=q.front();
      		q.pop();
      		for(int i=0;i<ab;i++){
      			if(tr[u][i]){
      				fail[tr[u][i]]=tr[fail[u]][i];
      				end[tr[u][i]]|=end[fail[tr[u][i]]];
      				q.push(tr[u][i]);
      			}
      			else{
      				tr[u][i]=tr[fail[u]][i];
      			}
      		}
      	}
      //	for(int i=0;i<=tot;i++){
      //		cout<<fail[i]<<" ";
      //	}
      //	puts("");
      	tot++;
      	for(int i=0;i<tot;i++){
      		for(int j=0;j<ab;j++){
      			if(end[tr[i][j]]){
      				bas[i][0]+=1.0/ab;
      				bas[i][tot]+=1.0/ab;
      			}
      			else{
      				bas[i][tr[i][j]]+=1.0/ab;
      			}
      		}
      	}
      	bas[tot][tot]=1;
      	printf("%.10f",qpow(bas,m)[0][tot]);
      	return 0;
      }
      }
      int main(){return asbt::main();}
      
      posted @ 2025-02-06 20:11  zhangxy__hp  閱讀(33)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 天堂资源国产老熟女在线| 国产AV老师黑色丝袜美腿 | 国产v亚洲v天堂无码久久久| 亚洲男人电影天堂无码| 国产精品中文字幕日韩| 人妻久久久一区二区三区| 国产精品无码av不卡| 18禁黄无遮挡网站免费| 女高中生强奷系列在线播放 | 九九在线精品国产| 免费无码va一区二区三区| 无码AV无码天堂资源网影音先锋| 国产999精品2卡3卡4卡| 亚洲首页一区任你躁xxxxx| 四虎精品永久在线视频| 精品无码av无码免费专区| 亚洲区成人综合一区二区| 日韩V欧美V中文在线| 亚洲中文字幕无码久久2017 | 中文字幕无码专区一VA亚洲V专| www国产无套内射com| 加勒比中文字幕无码一区| 国产精品色三级在线观看| 伊人久久精品一区二区三区| 人妻中文字幕亚洲精品| 国产日本一区二区三区久久| 亚洲欧洲∨国产一区二区三区 | 国产成人av电影在线观看第一页| 热久在线免费观看视频 | 亚洲国产天堂一区二区三区| 国产成人亚洲一区二区三区| 国产99视频精品免费专区| 国产永久免费高清在线| 欧洲一区二区中文字幕| 99热国产成人最新精品| 国产精品白丝久久AV网站| 国产精品久久久天天影视| 国产精品自在自线视频| 久久精品国产午夜福利伦理| 好吊视频在线一区二区三区| 中文字幕日韩精品有码|