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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

【bzoj3991】[SDOI2015]寻宝游戏 树链的并+STL-set

發(fā)布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【bzoj3991】[SDOI2015]寻宝游戏 树链的并+STL-set 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目描述

給出一棵樹,初始每個點都是非必經(jīng)的。多次改變某個點的必經(jīng)狀態(tài),并詢問從任意一個點出發(fā),經(jīng)過所有必經(jīng)的點并回到該點的最小路程。

輸入

第一行,兩個整數(shù)N、M,其中M為寶物的變動次數(shù)。

接下來的N-1行,每行三個整數(shù)x、y、z,表示村莊x、y之間有一條長度為z的道路。 接下來的M行,每行一個整數(shù)t,表示一個寶物變動的操作。若該操作前村莊t內沒有寶物,則操作后村莊內有寶物;若該操作前村莊t內有寶物,則操作后村莊內沒有寶物。

輸出

M行,每行一個整數(shù),其中第i行的整數(shù)表示第i次操作之后玩家找到所有寶物需要行走的最短路程。若只有一個村莊內有寶物,或者所有村莊內都沒有寶物,則輸出0。

樣例輸入

4 5
1 2 30
2 3 50
2 4 60
2
3
4
2
1

樣例輸出

0
100
220
220
280


題解

樹鏈的并+STL-set

考慮指定某個點為根,如果從根節(jié)點出發(fā)的話,答案顯然是所有必經(jīng)點到根節(jié)點的樹鏈的并的長度*2。

我們維護這個樹鏈的并:把所有點按照dfs序排序,每個點到根的距離減去排序后相鄰兩點LCA到根的距離就是樹鏈的并的長度。本題由于需要支持插入和刪除,因此可以使用STL-set。

但是這并不是最優(yōu)解。考慮重復經(jīng)過了哪一段:所有相鄰兩點LCA中深度最小的到根節(jié)點的距離。也即按dfs序排序后第一個點和最后一個點的LCA到根節(jié)點的距離。因此再使用set統(tǒng)計一下答案即可。

時間復雜度 $O(n\log n)$

#include <set> #include <cstdio> #define N 100010 using namespace std; typedef long long ll; set<int> s; int head[N] , to[N << 1] , len[N << 1] , next[N << 1] , cnt , fa[N][20] , deep[N] , log[N] , pos[N] , ref[N] , tot , vis[N]; ll dis[N]; inline void add(int x , int y , int z) {to[++cnt] = y , len[cnt] = z , next[cnt] = head[x] , head[x] = cnt; } void dfs(int x) {int i;pos[x] = ++tot , ref[tot] = x;for(i = 1 ; (1 << i) <= deep[x] ; i ++ ) fa[x][i] = fa[fa[x][i - 1]][i - 1];for(i = head[x] ; i ; i = next[i])if(to[i] != fa[x][0])fa[to[i]][0] = x , deep[to[i]] = deep[x] + 1 , dis[to[i]] = dis[x] + len[i] , dfs(to[i]); } inline int lca(int x , int y) {int i;if(deep[x] < deep[y]) swap(x , y);for(i = log[deep[x] - deep[y]] ; ~i ; i -- )if((1 << i) <= deep[x] - deep[y])x = fa[x][i];if(x == y) return x;for(i = log[deep[x]] ; ~i ; i -- )if((1 << i) <= deep[x] && fa[x][i] != fa[y][i])x = fa[x][i] , y = fa[y][i];return fa[x][0]; } int main() {int n , m , i , x , y , z;set<int>::iterator it;ll now = 0;scanf("%d%d" , &n , &m);for(i = 2 ; i <= n ; i ++ ) scanf("%d%d%d" , &x , &y , &z) , add(x , y , z) , add(y , x , z) , log[i] = log[i >> 1] + 1;dfs(1);while(m -- ){scanf("%d" , &x) , y = z = 0;if(!vis[x]){it = s.upper_bound(pos[x]);if(it != s.end()) y = ref[*it];if(it != s.begin()) z = ref[*--it];if(y) now -= dis[lca(x , y)];if(z) now -= dis[lca(x , z)];if(y && z) now += dis[lca(y , z)];now += dis[x] , vis[x] = 1 , s.insert(pos[x]);}else{now -= dis[x] , vis[x] = 0 , s.erase(pos[x]);it = s.upper_bound(pos[x]);if(it != s.end()) y = ref[*it];if(it != s.begin()) z = ref[*--it];if(y) now += dis[lca(x , y)];if(z) now += dis[lca(x , z)];if(y && z) now -= dis[lca(y , z)];}if(s.size() < 2) puts("0");else printf("%lld\n" , (now - dis[lca(ref[*s.begin()] , ref[*--s.end()])]) << 1);}return 0; }

?

?

轉載于:https://www.cnblogs.com/GXZlegend/p/8059408.html

總結

以上是生活随笔為你收集整理的【bzoj3991】[SDOI2015]寻宝游戏 树链的并+STL-set的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 黄色大片视频 | 黄色免费一级片 | 亚洲欧美一区二区视频 | 国产一区二区在线电影 | 国产青青在线 | 欧美区在线 | 按摩害羞主妇中文字幕 | 色网站入口 | 国产又粗又长又大视频 | 中文字幕97 | 日韩免费观看一区二区 | 欧美一级黄色片在线观看 | 最新极品jizzhd欧美 | 日本视频网站在线观看 | 黄色avav| 婷婷激情视频 | 麻豆tv在线| 奇米影视一区二区 | www九九九| 国产在线观看a | 国产999精品视频 | 国产精品无码免费在线观看 | 伊人tv| 99热超碰| 国产 欧美 日本 | 精品久久久久久中文字幕人妻最新 | 91免费高清在线观看 | 最新久久久| av软件在线观看 | 麻豆精品在线视频 | 五月婷婷社区 | 国产91影院| 亚洲日日夜夜 | 91av在线播放 | 亚洲欧美91 | 永久在线| 亚洲日本香蕉视频 | 色射综合| 天天曰夜夜操 | a级片视频网站 | 激情六月综合 | 亚洲天堂第一 | 精品国产99一区二区乱码综合 | 久久久精品国产sm调教网站 | 影音先锋男人的天堂 | 亚洲国产精品人人爽夜夜爽 | av大片在线观看 | 牛av| 在线va视频 | 丰满少妇被猛烈进入一区二区 | 强行挺进白丝老师翘臀网站 | 成人欧美一区二区三区黑人免费 | 麻豆传媒网站入口 | 国产3p露脸普通话对白 | av青娱乐 | 久久偷看各类女兵18女厕嘘嘘 | 精品日本一区二区 | 国产喷水吹潮视频www | 欧美人与性禽动交精品 | 黄色片网站免费看 | 日本一区二区三区在线观看视频 | 精品一区二区无码 | 精品香蕉99久久久久网站 | 欧美老女人性生活视频 | 午夜xxxxx| 大桥未久在线视频 | 亚洲国产精品一 | 国产传媒视频 | 亚洲一区 视频 | 欧美福利一区 | 日韩成人av电影 | 黄色片视频播放 | 亚州一二区 | 国产调教在线观看 | 日韩经典中文字幕 | 欧美一卡二卡在线观看 | 91丨porny丨对白 | 欧美一区二区三区久久妖精 | 日韩簧片在线观看 | 播放美国生活大片 | 亚洲第一区在线播放 | 91成人免费在线观看视频 | 午夜一级黄色片 | 姐姐的朋友2在线 | 无码人妻一区二区三区在线视频 | 美女久久视频 | 欧美视频一区在线观看 | 久久精品国产成人av | 亚洲麻豆av | 黄色一级视频网站 | 成人亚洲区 | 免费看欧美成人a片无码 | www.成人免费视频 | 免费在线观看小视频 | 91爱爱网| 黄色一及片 | 福利视频在线 | 亚洲av成人精品日韩在线播放 | 亚洲综合av一区二区三区 |