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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

BZOJ 3555: [Ctsc2014]企鹅QQ

發布時間:2023/12/18 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BZOJ 3555: [Ctsc2014]企鹅QQ 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

似乎大家全部都用的是hash?那我講一個不用hash的做法吧。

首先考慮只有一位不同的是哪一位,那么這一位前面的位上的字符一定是全部相同,后面的字符也是全部相同。首先考慮后面的字符。

我們對n個串的反串建trie樹,這樣,每一個后綴就對應一個trie樹上的唯一一個節點,不同的后綴對應的就是不同的節點,這樣就不用hash表了。

但是字符集很大,用trie空間太大,那么就用鄰接表或map存邊就好了。

然后就是令前綴全部相同。那么我們從左到右枚舉每一位,按照當前位的字符進行分治,當前位不同的就通過后綴計算貢獻,相同的就放在一起,繼續分治即可。

然后就跑的飛快,目前是BZOJ rk2,Luogu rk1。

實現的時候有很多細節,具體請參考代碼。

#include<cstdio> #include<cstring> #include<algorithm> #include<queue> #include<cctype> #define qmin(x,y) (x=min(x,y)) #define qmax(x,y) (x=max(x,y)) #define vi vector<int> #define vit vector<int>::iterator #define pir pair<int,int> #define fr first #define sc second #define mp(x,y) make_pair(x,y) #define rsort(x,y) sort(x,y),reverse(x,y) using namespace std;inline char gc() { // static char buf[100000],*p1,*p2; // return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++;return getchar(); }template<class T> int read(T &ans) {ans=0;char ch=gc();T f=1;while(!isdigit(ch)) {if(ch==EOF) return -1;if(ch=='-') f=-1;ch=gc();}while(isdigit(ch))ans=ans*10+ch-'0',ch=gc();ans*=f;return 1; }template<class T1,class T2> int read(T1 &a,T2 &b) {return read(a)!=EOF&&read(b)!=EOF?2:EOF; }template<class T1,class T2,class T3> int read(T1 &a,T2 &b,T3 &c) {return read(a,b)!=EOF&&read(c)!=EOF?3:EOF; }typedef long long ll; const int Maxn=6100000; const int Maxm=31000; const int Maxl=210; const int inf=0x3f3f3f3f;int to[Maxn],nxt[Maxn],first[Maxn],tot=1; char w[Maxn],s[Maxm][Maxl]; int p[Maxm][Maxl],n,len,x,po[Maxl][Maxl],qq[Maxl],bj[Maxl],ans; int a[Maxm],siz[Maxl],b[Maxm],tn[Maxn],cnt=1; queue<int> q[Maxl];inline void add(int u,int v,char wi) {to[tot]=v;nxt[tot]=first[u];w[tot]=wi;first[u]=tot++; }void solve(int l,int r,int cur) {if(l>r) return ;if(cur==len) return ;int cnt=0;for(int i=l;i<=r;i++) {int x=s[a[i]][cur];q[x].push(a[i]);siz[x]++;if(!bj[x]) qq[++cnt]=x,bj[x]=1;}if(cnt==1) {for(int i=1;i<=cnt;i++) bj[qq[i]]=siz[qq[i]]=0;while(!q[qq[1]].empty()) q[qq[1]].pop();solve(l,r,cur+1);}else {int sxz,zhy=0;for(int i=1;i<=cnt;i++) {if(siz[qq[i]]>zhy) {sxz=i;zhy=siz[qq[i]];}}swap(qq[cnt],qq[sxz]);int las=l;po[cur][0]=las;for(int i=1;i<cnt;i++) {int x=qq[i],num=0;while(!q[x].empty()) {int now=q[x].front();q[x].pop();b[++num]=p[now][cur+1];ans+=tn[b[num]];a[las++]=now;}while(num) tn[b[num--]]++;po[cur][i]=las;}while(!q[qq[cnt]].empty()) {int now=q[qq[cnt]].front();q[qq[cnt]].pop();ans+=tn[p[now][cur+1]];a[las++]=now;} po[cur][cnt]=las;for(int i=l;i<po[cur][cnt-1];i++) tn[p[a[i]][cur+1]]--;for(int i=1;i<=cnt;i++) bj[qq[i]]=siz[qq[i]]=0;for(int i=1;i<=cnt;i++)solve(po[cur][i-1],po[cur][i]-1,cur+1);} }signed main() { // freopen("test.in","r",stdin);read(n,len,x);for(int i=1;i<=n;i++) {scanf("%s",s[i]);int now=1;for(int j=len-1;j>=0;j--) {int temp=0;for(int k=first[now];k;k=nxt[k])if(w[k]==s[i][j]) {temp=to[k];break;}if(!temp) add(now,++cnt,s[i][j]),temp=cnt;now=temp;p[i][j]=now;}}for(int i=1;i<=n;i++) a[i]=i;solve(1,n,0);printf("%d\n",ans);return 0; }

轉載于:https://www.cnblogs.com/shanxieng/p/10783697.html

總結

以上是生活随笔為你收集整理的BZOJ 3555: [Ctsc2014]企鹅QQ的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美brazzers| www.久久爱 | 中文字幕 欧美日韩 | 九一亚色 | 北条麻妃一区二区三区在线观看 | 精品国产一| 超碰视屏| 亚洲永久精品ww.7491进入 | 黄色网址在线免费观看 | 国精产品一区一区三区视频 | 美女一级片| 国产第三区| 在线亚洲不卡 | 51啪影院| 欧美亚洲自拍偷拍 | 精品国产无码AV | 黄网站色视频免费观看 | 曰本女人与公拘交酡 | 天堂福利在线 | 国模无码视频一区二区三区 | 亚洲做受高潮无遮挡 | 亚洲精品一区二区在线观看 | 青青成人网 | 久久久精品国产免费爽爽爽 | www.成人网| 亚洲一区二区视频在线播放 | 在线青草 | 一区二区三区在线 | 亚洲天堂精品视频 | 制服.丝袜.亚洲.中文.综合懂色 | 重口变态虐黄网站 | 剧情av在线 | 久草视频在线资源 | 永久免费未网 | 黄色片a| 日本老年老熟无码 | 国产午夜一区 | 日韩视频专区 | 四虎首页| 色婷婷热久久 | 丝袜熟女一区二区三区 | 日韩第六页 | 亚洲精品在线播放视频 | 日本aaa视频 | 黄色大片一级片 | 四川黄色一级片 | 天天干天天操天天射 | 午夜视频免费在线观看 | 亚洲成人av免费在线观看 | 久操久 | 潘金莲黄色一级片 | 久久国产精品国产精品 | 懂色av成人一区二区三区 | 中文字幕四区 | 老色批永久免费网站www | 伊人久久综合视频 | 国产色一区二区 | 亚洲人 女学生 打屁股 得到 | 天天射夜夜爽 | 制服丝袜先锋影音 | 久久免费在线 | a视频免费观看 | 日韩欧美视频网站 | 国产一区二区三区中文字幕 | 日本不卡高清视频 | av在线浏览 | 岛国av动作片 | 亚洲乱码中文字幕 | 四虎影院黄色 | 欧美精品久久久久久久久久 | 三级做爰在线观看视频 | 亚洲老老头同性老头交j | 国产精品成人免费看片 | 久久躁日日躁aaaaxxxx | www.96av| 九草在线观看 | 亚洲精品国产精品乱码桃花 | 免费手机av | 国产一级做a爰片久久毛片男 | 两性免费视频 | 午夜在线免费观看 | wwwxx欧美| 亚洲欧美日韩精品久久 | 对白刺激theporn | 久久在线看 | 在线视频欧美一区 | 亚洲视频四区 | 国产suv精品一区二区6 | 亚洲网站免费观看 | 国产一区二区久久精品 | 山村淫强伦寡妇 | 国产一区二区自拍视频 | 亚洲清纯国产 | 日韩欧美亚洲一区 | 少妇精品亚洲一区二区成人 | 无套内谢少妇高潮免费 | 先锋成人 | 天天操综合 | 91网视频 |