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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[題解](并查集)luogu_P2391 白雪皚皚

發(fā)布時(shí)間:2024/9/5 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [題解](并查集)luogu_P2391 白雪皚皚 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

今天被老師留的作業(yè)搞死了,全是裸的水題,難題就那麼兩道我還沒寫......,狗屎


?

1.倒序處理,每個(gè)點(diǎn)至多會(huì)被更新一次

2.所以要做的就是快速找到下一個(gè)不同顏色的點(diǎn),

3.然而不知道怎麼就 想到用并查集維護(hù) 了?用雙向鏈錶不是更自然碼(雖然也可以)

4.其實(shí)并查集就是把相鄰的相同顏色的點(diǎn)并成一個(gè),直接處理端點(diǎn)即可

#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn=1000010; int n,m,p,q,fa[maxn],a[maxn]; int find(int x){if(fa[x]<0)return x;else return fa[x]=find(fa[x]); } int main() {scanf("%d%d%d%d",&n,&m,&p,&q);memset(fa,-1,sizeof(fa));for(int i=m;i>=1;i--){int l=(i*p+q)%n+1,r=(i*q+p)%n+1;if(l>r)swap(l,r);l=find(l);while(l<=r)a[l]=i,fa[l]=l+1,l=find(l+1);//每次把l和l+1合併,一定是一樣的,因?yàn)閘是左端點(diǎn) }for(int i=1;i<=n;i++)printf("%d\n",a[i]); }

?

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

總結(jié)

以上是生活随笔為你收集整理的[題解](并查集)luogu_P2391 白雪皚皚的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

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