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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

luogu 4768

發布時間:2025/3/15 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 luogu 4768 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

kruskal 重構樹
對于一張無向圖,我們在進行 kruskal 的過程中
每當合并兩個聯通塊時
新建虛擬節點 t
對于兩個聯通塊的根節點 fau,fav 連無向邊
(fau, t),(fav, t) 其中點 t 的點權為兩個聯通塊當前連邊的邊權
對于這道題
首先 dijkstra 處理所有點到1號點的最短路
然后按照邊的海拔進行降序排序
這樣做出重構樹之后
顯然對于點 u,它的所有子樹中的相關的邊的海拔(這里已經轉化為了虛擬節點的點權)都要大于該點的海拔
這樣的話
對于詢問二元組 x, h
倍增將 x 調到海拔最低且高于 h 的點處
此時 x 的子樹中dis[]的最小值即為此次詢問的結果
注意:在進行重構樹時
虛擬節點的dis[]每次可以取 min(dis[fau], dis[fav])
這樣就相當于dis[t]表示 t 的子樹中dis[]的最小值
省去了一遍 dfs

#include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <cstring>using namespace std; const int N = 4e5 + 10, oo = 1e9 + 7;struct Node {int u, v, len, high, nxt; } E[N], G[N << 2], Edge[N << 1]; struct Node_ {int u, dis_;inline bool operator < (const Node_ a) const {return dis_ > a.dis_;} };int head_1[N], head_2[N << 1], now; int dis[N << 1]; bool vis[N]; int fa[N << 1]; int n, m; int High[N << 1]; int f[N << 1][30]; int deep[N << 1];#define gc getchar() inline int read() {int x = 0;char c = gc;while(c < '0' || c > '9') c = gc;while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = gc;return x; }int Get(int x) {return fa[x] == x ? x : fa[x] = Get(fa[x]);} inline bool Cmp(Node a, Node b) {return a.high > b.high;} void Dfs(int u, int fa) {for(int i = head_2[u]; ~ i; i = G[i].nxt) if(G[i].v != fa) f[G[i].v][0] = u, Dfs(G[i].v, u);} inline int Jump(int X, int H) {for(int i = 20; i >= 0; i --) if(f[X][i] && High[f[X][i]] > H) X = f[X][i];return X;} inline void Add_Edge(int u, int v, int Len) {Edge[++ now].v = v; Edge[now].len = Len; Edge[now].nxt = head_1[u]; head_1[u] = now;} inline void Add_G(int u, int v) {G[++ now].v = v; G[now].nxt = head_2[u]; head_2[u] = now;} inline void Pre() {for(int i = 1; i <= 20; i ++) for(int j = 1; j <= (n * 2 - 1); j ++) f[j][i] = f[f[j][i - 1]][i - 1];}inline void Dijkstra() {for(int i = 1; i <= n; i ++) dis[i] = oo;for(int i = 1; i <= n; i ++) vis[i] = 0;priority_queue <Node_> Q;Q.push((Node_) {1, 0});dis[1] = 0;while(!Q.empty()) {Node_ topp = Q.top();Q.pop();if(vis[topp.u]) continue;vis[topp.u] = 1;for(int i = head_1[topp.u]; ~ i; i = Edge[i].nxt)if(dis[Edge[i].v] > dis[topp.u] + Edge[i].len) {dis[Edge[i].v] = dis[topp.u] + Edge[i].len;Q.push((Node_) {Edge[i].v, dis[Edge[i].v]});}} }inline void Kruskal() {sort(E + 1, E + m + 1, Cmp);for(int i = 1; i <= (n << 1); i ++) fa[i] = i;for(int i = 1; i <= (n << 1); i ++) head_2[i] = -1;int cnt = n;now = 0;for(int i = 1; i <= m; i ++) {if(cnt == n * 2 - 1) break;int u = E[i].u, v = E[i].v, fau = Get(u), fav = Get(v);if(fau != fav) {fa[fau] = fa[fav] = ++ cnt;High[cnt] = E[i].high;dis[cnt] = min(dis[fau], dis[fav]);Add_G(fau, cnt), Add_G(cnt, fau), Add_G(fav, cnt), Add_G(cnt, fav);}} }int main() {for(int T = read(); T; T --) {memset(f, 0, sizeof f);n = read(), m = read(); now = 0;for(int i = 1; i <= n; i ++) head_1[i] = -1;for(int i = 1; i <= m; i ++) {int u = read(), v = read(), Len = read(), high = read();Add_Edge(u, v, Len), Add_Edge(v, u, Len);E[i] = (Node) {u, v, Len, high};}Dijkstra(), Kruskal(), Dfs(2 * n - 1, 0), Pre();int Q = read(), K = read(), S = read(), Lastans = 0;for(; Q; Q --) {int X = (read() + K * Lastans - 1) % n + 1, H = (read() + K * Lastans) % (S + 1);Lastans = dis[Jump(X, H)]; cout << Lastans << "\n";}}return 0; }

?

轉載于:https://www.cnblogs.com/shandongs1/p/9497615.html

總結

以上是生活随笔為你收集整理的luogu 4768的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 亚洲欧美一级 | 高h放荡受浪受bl | 欧美涩涩视频 | 午夜精品一区二区三区三上悠亚 | 日本特级毛片 | 久久亚洲影院 | 一二三区在线播放 | 国产视频久久 | 丰腴饱满的极品熟妇 | 亚洲第一成人av | 超碰在线观看av | 打屁股av| 91福利一区二区 | 尤物视频在线播放 | 亚洲精品国产福利 | 自拍偷拍小视频 | 久久精品9| 欧美大片视频在线观看 | 亚洲一区成人在线 | 亚洲第十页 | 99精品人妻无码专区在线视频区 | 99国产精品99 | 97视频在线免费观看 | 在线精品观看 | 日本护士╳╳╳hd少妇 | 亚洲福利午夜 | 亚洲精品乱码久久久久久国产主播 | 三级国产视频 | av男人在线 | jiz亚洲| 国产精选毛片 | 日本人妻一区 | 爱福利视频广场 | 日韩欧美国产成人精品免费 | 亚洲精品中文字幕在线观看 | 黄色av网| 日韩伊人网 | jzzijzzij日本成熟少妇 | 国产精品视频在线免费观看 | 一区二区中文字幕在线观看 | 欧美午夜视频 | 不卡影院一区二区 | 欧美成人aaa片一区国产精品 | 2024国产精品 | 中文字幕久久综合 | 久久亚洲欧美 | www,四虎 | 国产欧美日韩精品在线 | 欧美在线视频一区 | 欧美激情一级 | 女同激情久久av久久 | 国产午夜精品福利视频 | 国产91丝袜 | 日本少妇videos高潮 | 欧美日本一道本 | 日韩操操| 熟妇人妻久久中文字幕 | 亚洲精品高清在线观看 | 黄色福利社 | 日本黄色三级网站 | xxxwww黄色| 无码国产伦一区二区三区视频 | 一区二区三区欧美 | 日韩精品无码一本二本三本色 | 97精品人妻麻豆一区二区 | 日日操天天操 | 91精品日韩 | 国产又黄又粗的视频 | 美国伊人网 | 欧美人与性动交a欧美精品 日韩免费高清视频 | 久久精品亚洲一区二区 | 男人免费网站 | 国产成人无码a区在线观看视频 | 国产乡下妇女三片 | 欧美一区自拍 | 国产日韩不卡 | 久久特黄视频 | 伊人久艹| 日日射av | 色老头一区 | 国产精品后入内射日本在线观看 | 干干天天 | 亚洲系列 | 黄色免费网页 | 亚洲天堂av线 | 国产黄色免费大片 | 99精品在线播放 | 打开免费观看视频在线播放 | 91本色| 成人在线免费观看网址 | 天堂av资源在线观看 | 在线观看的av网址 | 性生交生活影碟片 | 成人性生交大片免费看r链接 | 色偷偷欧美 | 久久久久久无码午夜精品直播 | 金鱼妻日剧免费观看完整版全集 | 一区二区日韩av | 欧美激情一区 |