【二分答案+LCA】The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online B.Red Black Tree
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online B.Red Black Tree
1. 題意
一棵樹有n個節點n-1條邊,跟為1,有邊權。m個節點是紅色,其他是黑色。 有q此查詢,每次查詢有k個點組成的集合,設d[x]表示當前節點到最近紅點父節點的距離。如果x是紅點,d[x]=0。可以又一次機會把樹上一個節點變成紅色,使得集合中的d[x]變小,問你集合中的節點d[x]最小的最大值是多少?
2. 思路
可以用一次dfs預處理出所有的d[x],用於判斷二分答案是否滿足要求。 然後採用ST表求LCA的思路,在O(1)的複雜度求出LCA(x,y)。 對於滿足的二分答案的,可以捨棄,我們考慮不滿足的,求出剩下的所有的公共LCA就是經過最多次的點,把這個點變成紅色。 求公共LCA的方法是求最大的dfn和最小的dfn的LCA,就是公共的LCA。
wating
相關推薦
【二分答案+LCA】The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online B.Red Black Tree
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online B.Red Black Tree 1. 題意 一棵樹有n個節點n-1條邊,跟為1,有邊
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online - H Traveling on the Axis-【思維模擬題目】
view 本地 lang char following ring listitem swe src H Traveling on the Axis 作者: 浙江大學競賽命題組 單位: ACMICPC 時間限制: 500 ms 內存限制: 64 MB 代碼長度
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online(ACHJK)
A #include<bits/stdc++.h> using namespace std; #define clr(a) memset(a,0,sizeof(a)) #define line cout << "-------------"<&
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online 青島 B Red Black Tree
部落格目錄 原題 傳送門 B Red Black Tree BaoBao has just found a rooted tree with n vertices and (n−1) weighted edges in his backyard. Among the
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online H Traveling on the Axis ——dp
H Traveling on the Axis BaoBao is taking a walk in the interval [0,n] on the number axis, but he is not free to move, as at every
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online A,K,C
K XOR Clique BaoBao has a sequence a1,a2,...,an. He would like to find a subset S of {1,2,...,n} such that ∀i,j∈S, ai⊕aj&l
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online——K XOR Clique
題目連結: 【分析】 就是異或的只是 與12th的浙江省賽相似 只要轉換一下思路 就基本可以得出規律了 #include<bits/stdc++.h> using namespace std; const int maxn=1e5+5; int a
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online——H Traveling on the Axis
題目連結: 參考部落格 #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> usin
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online _H_Traveling on the Axis(字首+細節)
Traveling on the Axis Time Limit: 1 Second Memory Limit: 65536 KB BaoBao is taking a walk in the interval on the numbe
The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online
zoj4047 A Live Love DreamGrid is playing the music game Live Love. He has just finished a song consisting of n notes and got a result se
Traveling on the Axis (The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online)
題目連結: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4054 題意就是一個小孩走一段路,這條路上有n個紅綠燈,並且告訴了你初始紅綠燈的狀態,用1表示路燈,0表示紅燈,並且沒經過一秒紅綠燈就轉換,從綠燈變為紅燈或
The 2018 ACM-ICPC Asia Qingdao Regional Contest
cin icpc regional pro efi lin lse || ems The 2018 ACM-ICPC Asia Qingdao Regional Contest 青島總體來說只會3題 C #include<bits/stdc++.h>
The 2018 ACM-ICPC Asia Qingdao Regional Contest (Mirror) - J Books(貪心)
這個題想了好久也沒想出來,轉不過彎來啊。 思路: 先討論Impossible的情況,如果書的價格為0的個數大於所要買的書本的數量,則為Impossible的情況。 然後是Richman的情況,如果n==m則為Richman的情況。 接下來是一般的情況,先將0項
The 2018 ACM-ICPC Asia Qingdao Regional Contest (Mirror) M Function and Function
此題是一道簽到題目,說是簽到題目但是自己卻做了好久啊。。。如果暴力算的話,會超時。 仔細分析一下會發現f(0)跟f(1)是能夠相互轉化的。所以當算到0和1的時候只需要根據奇偶次運算就能夠判斷結果了。 程式碼如下: #include <cstdio> #includ
The 2018 ACM-ICPC Asia Qingdao Regional Contest (Mirror)
地址 Rank Solved A B C D E F G H I J K L M 24/282 5/13 . .
The 2018 ACM-ICPC Asia Qingdao Regional Contest(部分題解)
摘要: 本文是The 2018 ACM-ICPC Asia Qingdao Regional Contest(青島現場賽)的部分解題報告,給出了出題率較高的幾道題的題解,希望熟悉區域賽的題型,進而對其他區域賽的準備有借鑑意義。 Function and Function 題意
ZOJ - 4068 Airdrop (思維)(The 2018 ACM-ICPC Asia Qingdao Regional Contest - K)
Airdrop Time Limit: 2 Seconds Memory Limit: 65536 KB PUBG is a multiplayer online battle royale vide
The 2018 ACM-ICPC Asia Qingdao Regional Contest C Halting Problem
題解 題目大意 n個操作 基礎值r 定義五種操作 add將r增加v beq看r是否等於v如果等於則跳轉到第k條指令 bne看r是否不等於v如果不等於則跳轉到第k條指令 blt看r是否嚴格小於v如果小於則跳轉到第k條指令 bgt看r是否嚴格大於v
The 2018 ACM-ICPC Asia Qingdao Regional Contest (Mirror) M Function and Function
此題是一道簽到題目,說是簽到題目但是自己卻做了好久啊。。。如果暴力算的話,會超時。 仔細分析一下會發現f(0)跟f(1)是能夠相互轉化的。所以當算到0和1的時候只需要根據奇偶次運算就能夠判斷結果了。 程式碼如下: #include <cstdio>
The 2018 ACM-ICPC Asia Beijing Regional Contest
http://hihocoder.com/problemset/problem/ #1870 : Jin Yong’s Wukong Ranking List 我是每加1個點就dfs判斷1次。 正解是拓撲排序。。。 1 #include <cstdio&g