luogu3295 萌萌噠 並查集 ST表

2022-04-29 22:39:18 字數 1197 閱讀 2003

如果給相同的位置連邊,最後聯通塊數是n,最後答案就是$9*10^$

但直接連邊是$o(n^2)$的

所以事先處理出乙個st表,每次o(1)地給那個st錶連邊

最後再一點一點下放,就是把在這層的同一集合的的左兒子連到乙個裡,右兒子連到乙個裡

統計最下面那一層的聯通塊數量就行了

1 #include2

#define pa pair3

#define clr(a,x) memset(a,x,sizeof(a))

4using

namespace

std;

5 typedef long

long

ll;6

const

int maxn=1e5+10,logn=20,p=1e9+7;7

8inline ll rd()

11while(c>='

0'&&c<='

9') x=x*10+c-'

0',c=getchar();

12return x*neg;13}

1415

int id[maxn][20],pct,fa[maxn*logn],ch[maxn*logn][2

];16

intn,m;

17bool flag[maxn*logn];

1819 inline int getf(int x)

20 inline void

makest()

28//

printf("%d %d\n",i,id[i][0]);29}

30for(int i=1;i<=pct;i++) fa[i]=i;31}

3233 inline pa get(int l,int

r)37

38 inline void add(int a,int

b)42

43int

main()

53for(i=17;i;i--)60}

61}62int cnt=0;63

for(i=1;i<=n;i++)

6667 ll ans=9;68

for(i=1;i<=cnt-1;i++) ans=(ans*10)%p;

69 printf("

%d\n

",ans);

70return0;

71 }

BZOJ 4569 萌萌噠 (並查集)

time limit 10 sec memory limit 256 mb description 乙個長度為n的大數,用s1 s2 s3 sn表示,其中si表示數的第i位,s1是數的最高位,告訴你一些限制條件,每個條 件表示為四個數,l1,r1,l2,r2,即兩個長度相同的區間,表示子串sl1 s...

BZOJ4569 萌萌噠 倍增 並查集

沒想到這兩個東西還可以這麼用,我們可以用f i j 表示 i i 2 j 1 這一段區間屬於哪乙個集合,沒有則等於0.那麼每次合併我們可以把這個限制拆成log個區間,依次合併起來。若f i j 和f s t 同屬乙個集合,那麼f i j 1 和f s t 1 f i 2j 1 j 1 和f s 2t...

SCOI2016 萌萌噠 並查集 倍增

傳送門 一開始是想賭一把,把節點乙個乙個的unite,然後懷著wa的心情wa了。然後又準備用離散去優化,然後又懷著wa的心情wa了。萬般無奈去查題解,發現竟然要使用倍增?倍增是啥,我多少年沒有用過了 複習了一波倍增,原來倍增也可以用在並查集上,我對並查集又有了新的理解,這個資料結構,好強啊!incl...