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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

luogu P3295 [SCOI2016]萌萌哒

發(fā)布時(shí)間:2023/12/10 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 luogu P3295 [SCOI2016]萌萌哒 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

傳送門

題目條件"兩個子串\(S[l_1,r_1],S[l_2,r_2]\)完全相同"等價(jià)于\(\forall i \in[0,r_1-l_1+1],S_{l1+i}=S_{l_2+i}\),然后所有相同位置的都要選一種數(shù)字,把所有相同的放在一個集合,然后記集合個數(shù)為\(cn\)那么答案就是\(9*10^{cn-1}\),因?yàn)榈谝晃徊粸?,然后就可以暴力并查集做到\(O(n^2)\)

發(fā)現(xiàn)這樣的連邊是一個區(qū)間對應(yīng)向另一個區(qū)間連邊,可以考慮優(yōu)化.因?yàn)檫B邊要一一對應(yīng),所以可以ST表優(yōu)化連邊.就是每個點(diǎn)拆出\(log\)個點(diǎn),代表以這個點(diǎn)為左端點(diǎn)的長度為\(2^k\)的區(qū)間,然后每次兩個區(qū)間二進(jìn)制拆分一下,在對應(yīng)的點(diǎn)連邊就好了個鬼.不過這樣還是不對的,最后還要把這些連的邊的作用發(fā)揮出來,就從上往下遍歷ST表的每一層,某個點(diǎn)如果在當(dāng)前層的根不是自己,那么就把自己的左兒子,右兒子分別向根的兩個兒子連邊,然后做下去

#include<bits/stdc++.h> #define LL long long #define db long double #define il inline #define re registerusing namespace std; const int N=1e5+10,mod=1e9+7; il LL rd() {LL x=0,w=1;char ch=0;while(ch<'0'||ch>'9') {if(ch=='-') w=-1;ch=getchar();}while(ch>='0'&&ch<='9') {x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}return x*w; } int n,m,lz,ff[N][17],l2[N]; int findf(int x,int i){return ff[x][i]==x?x:ff[x][i]=findf(ff[x][i],i);} int fpow(int a,int b){int an=1;while(b){if(b&1) an=1ll*an*a%mod;a=1ll*a*a%mod,b>>=1;}return an;}int main() {n=rd(),m=rd();lz=log2(n);for(int j=0;j<=lz;++j) l2[1<<j]=j;for(int j=0;j<=lz;++j)for(int i=1;i+(1<<j)-1<=n;++i)ff[i][j]=i;while(m--){int l=rd(),r=rd(),ll=rd(),rr=rd();if(l==ll) continue;rr=rr-ll+1;while(rr){int x=rr&(-rr),y=l2[x];ff[findf(l,y)][y]=findf(ll,y);l+=x,ll+=x;rr-=x;}}for(int j=lz;j;--j){for(int i=1;i+(1<<j)-1<=n;++i)if(i!=findf(i,j))ff[findf(i,j-1)][j-1]=findf(findf(i,j),j-1),ff[findf(i+(1<<(j-1)),j-1)][j-1]=findf(findf(i,j)+(1<<(j-1)),j-1);}int cn=0;for(int i=1;i<=n;++i) cn+=i==findf(i,0);printf("%lld\n",9ll*fpow(10,cn-1)%mod);return 0; }

轉(zhuǎn)載于:https://www.cnblogs.com/smyjr/p/10537890.html

總結(jié)

以上是生活随笔為你收集整理的luogu P3295 [SCOI2016]萌萌哒的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。