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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

[HNOI2016]网络(树链剖分+线段树+大根堆)

發布時間:2023/12/3 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [HNOI2016]网络(树链剖分+线段树+大根堆) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

[HNOI2016]網絡

problem

solution

另辟蹊徑,不把交互請求賦在新增路徑上,反而把交互請求賦在樹上除去該請求路徑覆蓋點的其它點上

顯然,路徑問題樹剖是非常可以的、

那么一個點上的信息就表示所有不經過該點的交互請求,用堆存儲下來

但是又有交互請求刪除問題,就在點上再來一個堆存儲已經刪除的請求

查詢就相當于單點查詢,兩個大根堆,如果堆頭相同,就刪去,直到堆頭不同

code

#include <queue> #include <cstdio> #include <vector> #include <iostream> #include <algorithm> using namespace std; #define maxn 200005 pair < int, int > path[maxn]; int n, m, cnt; vector < int > G[maxn]; int dfn[maxn], dep[maxn], Top[maxn], siz[maxn], son[maxn], f[maxn];struct node {int u, v, w;node(){}node( int U, int V, int W ) {u = U, v = V, w = W;} }opt[maxn];class New_Queue {private :priority_queue < int > Delete, Vis;public :int find() {while( ! Delete.empty() && ! Vis.empty() ) {if( Delete.top() == Vis.top() )Delete.pop(), Vis.pop();elsebreak;}return Vis.empty() ? -1 : Vis.top();}void insert( int x ) {Vis.push( x );}void erase( int x ) {Delete.push( x );} };class SegMentTree {private :New_Queue t[maxn << 2];public :void modify( int num, int l, int r, int L, int R, int w, int opt ) {if( r < L || R < l ) return;if( L <= l && r <= R ) {opt ? t[num].insert( w ) : t[num].erase( w );return;}int mid = ( l + r ) >> 1;modify( num << 1, l, mid, L, R, w, opt );modify( num << 1 | 1, mid + 1, r, L, R, w, opt );}int query( int num, int l, int r, int pos ) {if( l == r ) return t[num].find();int mid = ( l + r ) >> 1;if( pos <= mid )return max( t[num].find(), query( num << 1, l, mid, pos ) );elsereturn max( t[num].find(), query( num << 1 | 1, mid + 1, r, pos ) );} }MS;void dfs1( int u, int fa ) {f[u] = fa, dep[u] = dep[fa] + 1, siz[u] = 1;for( int i = 0;i < G[u].size();i ++ ) {int v = G[u][i];if( v == fa ) continue;else dfs1( v, u );siz[u] += siz[v];if( ! son[u] || siz[v] > siz[son[u]] )son[u] = v;} }void dfs2( int u, int t ) {dfn[u] = ++ cnt, Top[u] = t;if( ! son[u] ) return;else dfs2( son[u], t );for( int i = 0;i < G[u].size();i ++ ) {int v = G[u][i];if( v == f[u] || v == son[u] ) continue;else dfs2( v, v );} }void modify( int u, int v, int w, int opt ) {cnt = 0;while( Top[u] ^ Top[v] ) {if( dep[Top[u]] < dep[Top[v]] ) swap( u, v );path[++ cnt] = make_pair( dfn[Top[u]], dfn[u] );u = f[Top[u]];}if( dep[u] < dep[v] ) swap( u, v );path[++ cnt] = make_pair( dfn[v], dfn[u] );sort( path + 1, path + cnt + 1 );for( int i = 1, k = 0;i <= cnt;k = path[i ++].second )if( k + 1 != path[i].first )MS.modify( 1, 1, n, k + 1, path[i].first - 1, w, opt );if( path[cnt].second ^ n )MS.modify( 1, 1, n, path[cnt].second + 1, n, w, opt ); }int main() {scanf( "%d %d", &n, &m );for( int i = 1, u, v;i < n;i ++ ) {scanf( "%d %d", &u, &v );G[u].push_back( v );G[v].push_back( u );}dfs1( 1, 0 ), dfs2( 1, 1 );for( int i = 1, type, a, b, v;i <= m;i ++ ) {scanf( "%d %d", &type, &a );switch( type ) {case 0 : {scanf( "%d %d", &b, &v );opt[i] = node( a, b, v );modify( a, b, v, 1 );break;}case 1 : {modify( opt[a].u, opt[a].v, opt[a].w, 0 );break;}case 2 : {printf( "%d\n", MS.query( 1, 1, n, dfn[a] ) );break;}}}return 0; }

總結

以上是生活随笔為你收集整理的[HNOI2016]网络(树链剖分+线段树+大根堆)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 青青草原综合久久大伊人精品 | 亚洲激情在线播放 | 久青草影视 | 成人欧美视频 | 亚洲成人网av | 青青草国产在线视频 | 午夜精品一区二区三区在线 | 嫩草av91 | 少妇无套内谢久久久久 | 国产无遮挡又黄又爽又色 | 亚洲一区二区国产精品 | 国产人成无码视频在线观看 | 91精品看片 | 麻豆精品在线 | 黄色片久久| 欧美色炮| 久艹伊人 | 91av久久 | 亚洲一级在线观看 | 日韩在线一区视频 | 伊人网综合网 | 波多野结衣黄色片 | 午夜精品福利一区二区 | 亚洲免费一区视频 | 成年人免费在线观看 | 伊人9| 毛片在线观看网站 | 6080av| 日韩欧美一区二区三区在线观看 | 三级网站在线播放 | 亚洲免费三区 | 国产suv精品一区二区 | 在线视频1卡二卡三卡 | 久久久精品亚洲 | 亚洲一区二区三区四区五区六区 | 麻豆视频传媒入口 | 秋霞欧美在线观看 | 男人透女人免费视频 | 精品久久久久久国产 | 波多野结衣伦理 | 久久特黄视频 | 黄色无遮挡 | 国产乱淫av片免费 | 91天堂素人 | 亚洲性在线 | 中国极品少妇xxxx做受 | 日韩亚洲欧美一区 | 特级西西444www大精品视频 | 欧美日韩久久久久久 | 亚洲精品麻豆 | 日韩欧美在线观看 | 国产激情无套内精对白视频 | 91久久精品日日躁夜夜躁国产 | 少妇真实被内射视频三四区 | 国产视频污在线观看 | 欧美激情影院 | 日韩精品免费一区二区在线观看 | 精品视频免费播放 | 97在线播放| 国产又黄又大又爽 | 久久青青草原亚洲av无码麻豆 | 操日本老太太 | 在线能看的av网站 | 美女校花脱精光 | 亚洲av无码精品色午夜果冻不卡 | 国产一区二区三区毛片 | 97在线免费视频观看 | 91中文字日产乱幕4区 | 天天干干干干干 | 欧美日韩网 | 男男巨肉啪啪动漫3d | 国产自产在线 | 6—12呦国产精品 | 91香蕉久久 | 欧美美女在线观看 | 最新福利视频 | 熟女高潮一区二区三区视频 | 九九热在线免费观看 | 精品国产视频一区二区三区 | 丝袜av在线播放 | 欧美黄色短视频 | www九色| 粉嫩av一区二区三区 | 国产又粗又猛又黄视频 | 欧美bbbbbbbbbbbb精品 | 天天操天天干天天摸 | 亚洲一区二区三区在线看 | 成人欧美一区二区三区黑人动态图 | 日本高清不卡码 | 老熟妇毛茸茸 | 欧美久久久久久久久久 | 咪咪色影院 | 久久r精品 | 久热最新视频 | 精品国产乱码久久久久久影片 | 中文字幕国产专区 | 亚洲最大成人在线视频 | 99热在线国产 | 免费在线不卡av |