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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

LOJ.2718.[NOI2018]归程(Kruskal重构树 倍增)

發布時間:2023/12/10 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LOJ.2718.[NOI2018]归程(Kruskal重构树 倍增) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

LOJ2718
BZOJ5415
洛谷P4768

Rank3+Rank1無壓力
BZOJ最初還不是一道權限題...

Update 2019.1.5
UOJ上被hack了....好像是純一條鏈的數據過不了,不管了....現在不想改。

容易想到按高度Kruskal重構樹+預處理到點1的距離dis。
建一棵最大生成樹,如果隨便建的話,如果非樹邊能走,整棵樹都能走答案當然是0...;如果有些樹邊不能走,那么可走范圍被限制在了某個連通塊。
然而被限制在某個連通塊和圖(還要暴力,難道樹分塊?)沒什么區別,所以我們可以讓生成樹邊的高度由葉子向上遞減,這樣每次詢問 找到深度最小的可行點后,答案就是其子樹dis最小值(樹形態顯然不會影響什么)。
就是在Kruskal合并兩個集合時,新建一個節點作為兩集合的并的代表節點,最低高度mn為這條邊權(當然不會比兩集合中的大),dis為兩集合dis的min。新樹葉子節點即為原所有節點。

昨天一時zz怎么就覺得Kruskal不對呢。。

//8079ms 51424K(LOJ) //洛谷 4860ms 50.49MB + 4392ms 50.33MB #include <queue> #include <cstdio> #include <cctype> #include <cstring> #include <algorithm> //#define gc() getchar() #define MAXIN 400000 #define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++) #define mp std::make_pair #define pr std::pair<int,int> const int N=2e5+5,M=8e5+5,INF=0x7fffffff;int n,m,tot,Enum,H[N],nxt[M],to[M],len[M],dis[N],fa[N<<1][19],mn[N<<1],anc[N<<1],Ans[N<<1]; std::priority_queue<pr> q; char IN[MAXIN],*SS=IN,*TT=IN; struct Edge {int fr,to,h;Edge() {}Edge(int fr,int to,int h):fr(fr),to(to),h(h) {}bool operator <(const Edge &x)const{return h>x.h;} }e[M>>1];inline int read() {int now=0;register char c=gc();for(;!isdigit(c);c=gc());for(;isdigit(c);now=now*10+c-'0',c=gc());return now; } inline void AddEdge(int _h,int w,int u,int v) {to[++Enum]=v, nxt[Enum]=H[u], H[u]=Enum, len[Enum]=w;to[++Enum]=u, nxt[Enum]=H[v], H[v]=Enum, len[Enum]=w;e[Enum>>1]=Edge(u,v,_h); } void Dijkstra() {static bool vis[N];memset(dis,0x3f,sizeof dis), memset(vis,0,sizeof vis);dis[1]=0, q.push(mp(0,1));while(!q.empty()){int x=q.top().second; q.pop();if(vis[x]) continue;vis[x]=1;for(int v,i=H[x]; i; i=nxt[i])if(dis[v=to[i]]>dis[x]+len[i])dis[v]=dis[x]+len[i], q.push(mp(-dis[v],v));} } int Get_fa(int x){return x==anc[x]?x:anc[x]=Get_fa(anc[x]); } void Kruskal() {for(int i=1; i<=n; ++i) anc[i]=i, Ans[i]=dis[i];int m=Enum>>1; std::sort(e+1,e+1+m);for(int r1,r2,k=1,i=1; i<=m; ++i){if((r1=Get_fa(e[i].fr))==(r2=Get_fa(e[i].to))) continue;anc[r1]=anc[r2]=fa[r1][0]=fa[r2][0]=++tot, anc[tot]=fa[tot][0]=tot/*!*/;//清空新建的fa[tot]!(可能作為根節點)mn[tot]=e[i].h, Ans[tot]=std::min(Ans[r1],Ans[r2]);if(++k==n) break;} } void Init_ST() {for(int i=1; i<=18; ++i)for(int x=1; x<=tot; ++x) fa[x][i]=fa[fa[x][i-1]][i-1]; } inline int Solve(int p,int ht) {for(int i=18; ~i; --i)if(mn[fa[p][i]]>ht) p=fa[p][i];return Ans[p]; }int main() { // freopen("return.in","r",stdin); // freopen("return.out","w",stdout);int Case=read();while(Case--){Enum=0, memset(H,0,sizeof H);tot=n=read(), m=read();while(m--) AddEdge(read(),read(),read(),read());Dijkstra(), Kruskal(), Init_ST();int Q=read(),K=read(),S=read(),ans=0,pos,ht;if(K) while(Q--)pos=(read()+ans-1)%n+1,ht=(read()+ans)%(S+1),printf("%d\n",ans=Solve(pos,ht));else while(Q--)pos=read(),ht=read(),printf("%d\n",Solve(pos,ht));}return 0; }

轉載于:https://www.cnblogs.com/SovietPower/p/9334873.html

總結

以上是生活随笔為你收集整理的LOJ.2718.[NOI2018]归程(Kruskal重构树 倍增)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 色一情一乱一区二区三区 | 日本高清不卡视频 | 无码国产精品一区二区免费16 | 久久国产色av免费观看 | 丰满人妻一区二区三区性色 | 亚洲mv一区 | 精品一区二区三区av | 日日操夜夜爽 | 亚洲视频福利 | 岳奶大又白下面又肥又黑水多 | 日韩av网站在线播放 | 99热这里只有精品2 91免费版黄 | 国产成人在线影院 | 欧美黄色免费 | 91久久久久久久久久久久 | 伊人久久伊人 | 女人的天堂av | av永久在线 | 久草视频在线资源站 | 黄色片视频免费在线观看 | 日本福利小视频 | 一区二区在线影院 | 亚洲一区毛片 | 午夜影院久久久 | 中文字幕一区二区三区电影 | 成人免费午夜视频 | 综合激情在线 | 激情戏网站| 日韩av手机在线播放 | 男女瑟瑟网站 | 美女黄污网站 | 亚洲国产免费视频 | 久久99精品久久久久子伦 | 91丝袜美女 | 91亚洲影院 | www.欧美日韩| 国产三级网站 | 欧美 丝袜 自拍 制服 另类 | 91禁在线看 | www污污 | 九九黄色大片 | 污污网站在线观看 | 精品国产乱码久久久久久1区2区 | 午夜影视在线观看 | 成人免费观看网站 | 国产成人观看 | 天天夜夜久久 | 男操女视频网站 | 中文在线www| 欧美色就是色 | 快色视频在线观看 | 老头老夫妇自拍性tv | av免播放器在线观看 | 国产午夜在线视频 | 黄色无遮挡 | 91原创国产 | 香蕉一区二区三区四区 | 四虎精品久久 | 欧美性教育视频 | 欧美在线综合 | 九色丨蝌蚪丨成人 | 人妻无码一区二区三区免费 | 大尺度av在线 | 国产精品久久久久影院 | 少妇无套高潮一二三区 | 欧洲av一区 | 成人一区二区三区仙踪林 | 欧美日韩精品网站 | 久久久精品在线观看 | 欧美色一区二区三区在线观看 | 天天躁日日躁aaaaxxxx | 成人综合站 | 欧美日在线观看 | 波多野结衣一区二区三区中文字幕 | 青娱乐久久 | 国内精品视频在线观看 | 日本加勒比在线 | 国产一区二区伦理 | 深夜老司机福利 | 国产精品毛片va一区二区三区 | 午夜影院日本 | 射进来av影视网 | 国产1区2区3区 | 中文字幕另类 | 国产无遮挡一区二区三区毛片日本 | 中文字幕亚洲图片 | 亚洲国产精品成人综合色在线婷婷 | 91在线精品播放 | 四虎影院一区 | 欧美精品成人一区二区在线观看 | 国产资源av | 伊人3 | 香蕉久久国产av一区二区 | av片在线免费观看 | 婷婷成人在线 | 国产影音先锋 | 男女网站免费 | 麻豆久久久久久久久久 | 女优在线观看 |