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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

CF1528C dfs序+set维护

發(fā)布時間:2023/12/4 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CF1528C dfs序+set维护 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

傳送門

文章目錄

  • 題意:
  • 思路:

題意:

給你兩棵有nnn個節(jié)點的樹,我門記第一棵為aaa,第二棵為bbb,現(xiàn)在你有一個nnn個點都孤立的點集,兩個點u,vu,vu,v可以連邊當(dāng)且僅當(dāng)這兩個點在aaa樹中一個是另一個的祖先節(jié)點且在bbb樹中每個都不是另一個的祖先節(jié)點,讓你求連完邊之后的最大聯(lián)通塊的大小是多少。
兩棵樹都以111為根。
n≤3e5n\le 3e5n3e5

思路:

首先我們知道答案選的點一定是aaa樹中從根節(jié)點到葉子節(jié)點的路徑上點的一個子集,這啟發(fā)我們可以從aaa樹的根開始向下dfsdfsdfs,維護(hù)走過的點,現(xiàn)在我們的問題就是如何從我們維護(hù)的點中選出一個最大的點集使其在bbb樹中都是符合條件的。
bbb樹中選出來的每兩個點都不互為祖先,那么他們倆一定在一棵子樹內(nèi),涉及子樹問題我們可以將其轉(zhuǎn)換成dfsdfsdfs序。
首先需要了解dfsdfsdfs序的性質(zhì),dfsdfsdfs序?qū)⒚總€子樹劃分為了若干區(qū)間,也就是每個子樹的根有一個區(qū)間[l,r][l,r][l,r],且劃分的若干區(qū)間只會有兩種情況:一個區(qū)間完全包含另一個區(qū)間,兩個區(qū)間完全不相交。
現(xiàn)在我們對bbb樹求一個dfsdfsdfs序,現(xiàn)在每個點都轉(zhuǎn)換成一個區(qū)間了,對aaa來說我們只需要需要維護(hù)一個從根到當(dāng)前點的若干個不相交線段,可以分以下兩個情況:
(1)(1)(1)如果我們當(dāng)前插入的點uuu的區(qū)間[lu,ru][l_u,r_u][lu?,ru?]包含了之前插入的區(qū)間,那么我們肯定是舍棄這個點是更優(yōu)的。
(2)(2)(2)如果我們當(dāng)前插入的點在前面已經(jīng)有的點的區(qū)間內(nèi)的話,那么肯定是將前面大區(qū)間刪掉,加入當(dāng)前區(qū)間是更優(yōu)的。
以上操作可以用setsetset維護(hù)一下in[u]in[u]in[u],讓后lowerboundlower_boundlowerb?ound找離他最近的點的in[v]in[v]in[v],判斷一下就好啦,第二種情況同理,只需要讓it??it--it??即可,具體的看代碼比較好懂。
復(fù)雜度O(nlogn)O(nlogn)O(nlogn)

Update:Update:Update
由于題目保證了ai<ia_i<iai?<i,那么說明標(biāo)號一定是遞增的,所以不會出現(xiàn)當(dāng)前區(qū)間是大區(qū)間,之前有小區(qū)間的情況,所以it==s.end()∣∣?it>out[u]it==s.end()||*it>out[u]it==s.end()?it>out[u]這個判斷條件可以直接去掉。

// Problem: E. Trees of Tranquillity // Contest: Codeforces - Codeforces Round #722 (Div. 2) // URL: https://codeforces.com/contest/1529/problem/E // Memory Limit: 256 MB // Time Limit: 3000 ms // // Powered by CP Editor (https://cpeditor.org)//#pragma GCC optimize("Ofast,no-stack-protector,unroll-loops,fast-math") //#pragma GCC target("sse,sse2,sse3,ssse3,sse4.1,sse4.2,avx,avx2,popcnt,tune=native") //#pragma GCC optimize(2) #include<cstdio> #include<iostream> #include<string> #include<cstring> #include<map> #include<cmath> #include<cctype> #include<vector> #include<set> #include<queue> #include<algorithm> #include<sstream> #include<ctime> #include<cstdlib> #define X first #define Y second #define L (u<<1) #define R (u<<1|1) #define pb push_back #define mk make_pair #define Mid (tr[u].l+tr[u].r>>1) #define Len(u) (tr[u].r-tr[u].l+1) #define random(a,b) ((a)+rand()%((b)-(a)+1)) #define db puts("---") using namespace std;//void rd_cre() { freopen("d://dp//data.txt","w",stdout); srand(time(NULL)); } //void rd_ac() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//AC.txt","w",stdout); } //void rd_wa() { freopen("d://dp//data.txt","r",stdin); freopen("d://dp//WA.txt","w",stdout); }typedef long long LL; typedef unsigned long long ULL; typedef pair<int,int> PII;const int N=1000010,mod=1e9+7,INF=0x3f3f3f3f; const double eps=1e-6;int n; int in[N],out[N],id[N],tot,ans; set<int>s; vector<int>v1[N],v2[N];void dfs2(int u) {in[u]=++tot; id[tot]=u;for(auto x:v2[u]) dfs2(x);out[u]=tot; }void dfs1(int u) {int flag=false;int del=-1;auto it=s.lower_bound(in[u]);if(it==s.end()||*it>out[u]) {if(it!=s.begin()) {it--;if(out[id[*it]]>=in[u]) {del=*it;s.erase(it);}}s.insert(in[u]);flag=true;}ans=max(ans,(int)s.size());for(auto x:v1[u]) dfs1(x);if(flag) {s.erase(in[u]);if(del!=-1) s.insert(del);} }int main() { // ios::sync_with_stdio(false); // cin.tie(0);int _; scanf("%d",&_);while(_--) {scanf("%d",&n);tot=0; s.clear(); ans=0;for(int i=1;i<=n;i++) v1[i].clear(),v2[i].clear();for(int i=2;i<=n;i++) {int x; scanf("%d",&x);v1[x].pb(i);}for(int i=2;i<=n;i++) {int x; scanf("%d",&x);v2[x].pb(i);}dfs2(1); dfs1(1);printf("%d\n",ans);}return 0; } /**/

總結(jié)

以上是生活随笔為你收集整理的CF1528C dfs序+set维护的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 五月天婷婷激情视频 | 日本a√在线观看 | 韩日精品视频 | 免费看成人aa片无码视频羞羞网 | 牛夜精品久久久久久久99黑人 | 嫩草影院污 | 久久美 | 日韩在线视频在线 | www.日韩.com | 欧美人与野 | 一个人看的视频www 色就是色网站 | 国产毛片av | 男女性高潮免费网站 | 999热视频| 亚洲图片小说视频 | 娇小萝被两个黑人用半米长 | 欧美精品999 | 色老头网址 | 91成人福利视频 | 亚洲综合自拍 | 日本福利小视频 | 国产精品扒开腿做爽爽爽a片唱戏 | 成人交性视频免费看 | 亚洲精品一级 | 午夜视频在线瓜伦 | 少妇综合 | 成人小视频免费在线观看 | 香蕉视频在线网址 | 国产精品女优 | 免费成人深夜在线观看 | 国产热99 | 波多野结衣在线 | 国产精品日韩精品 | 久久久91| 日韩国产欧美在线视频 | 色婷婷中文| 九九热在线精品 | 福利片在线播放 | 91亚洲精华国产精华精华液 | av色区| 日韩欧美激情在线 | 最近中文字幕在线mv视频在线 | 一区二区三区av | 九色porny丨精品自拍视频 | 亚洲天堂激情 | 在线精品亚洲欧美日韩国产 | 黄色高清无遮挡 | 牛牛精品一区 | 成人影片在线 | 色多多在线视频 | 午夜av免费在线观看 | 中文字幕日韩三级 | 蝌蚪自拍网站 | 在线观看99 | 精品在线免费观看 | 蜜桃又黄又粗又爽av免 | www成人在线| av在线看片 | 亚州综合视频 | 精品少妇无码av无码专区 | 亚洲偷自 | 人人97 | 台湾150部性三级 | 三级欧美韩日大片在线看 | 亚洲国产精品视频一区二区 | 别揉我奶头啊嗯一区二区 | 丁香花婷婷 | 亚洲成人播放器 | 色呦呦网站在线观看 | 国产亚州av | 激情欧美一区二区三区 | 闫嫩的18sex少妇hd | 亚洲精品91在线 | 日韩黄色在线视频 | 日日草日日干 | av黄色在线观看 | 中文字幕a级片 | 毛片基地免费 | 特级黄色一级片 | 啪视频网站 | 日韩一级不卡 | 91成人在线免费观看 | 色资源av | 欧美熟妇交换久久久久久分类 | 欧美成人hd | 国内国产精品天干天干 | 欧美日韩 一区二区三区 | 人人爽人人草 | 91草视频| 国产a免费观看 | 黑人玩弄人妻一区二区三区免费看 | 国产一级爱c视频 | 午夜在线 | 色综合婷婷 | 四虎毛片| 欧美国产视频一区 | 免费观看一级视频 | 爱综合网 | 国产区一区二区 |