BZOJ2851 極限滿月

2021-07-13 11:12:09 字數 958 閱讀 4004

題目大意:首先給你所有的a集合,第i個集合裡的數全部小於i,接著開始構造b集合,第i個b集合是由∪前面所有滿足條件的bk集合的交,滿足條件的bk集合指的是滿足k∈ai,然後給q個詢問,每次詢問一堆b集合的並的元素個數

這題考試的時候我看了挺長時間....到最後也沒想出來...考完了之後xuruifan告訴我是虛樹,然後我就震驚了,因為我沒看出來跟樹有半毛錢關係...

然後就只能回去接著看題,最後發現只有深刻理解了題目讓你幹的事情的本質才能進行下一步

我們可以把b集合想象成一棵樹,根為0,每個節點到根所經過的節點(不包括0)就代表b集合

然後我們開始想象這棵樹的建立,對於第i個b集合,假如他之前的樹都已經建好了,那麼指定集合的交相當於指定節點的lca,這個lca到根的路徑就是這些集合的交,然後我們在她的下面接乙個i節點,就相當於並上了乙個

這樣我們就可以在o(nlogn)的時間複雜度內建出b集合樹

然後有q個詢問,因為詢問總節點個數是有限制的,所以我們只需要像虛樹那樣o(tot logtot)的時間內算出所有的關鍵節點到根的路徑的並

開啟讀入優化會效果顯著

#include#include#include#include#define n 3000010

using namespace std;

int to[n],nxt[n],pre[n],cnt;

void ae(int ff,int tt)

int fa[n][21],d[n],cf[21];

int lca(int x,int y)

if(x==y) return x;

i=17;

while(fa[x][0]!=fa[y][0])

return fa[x][0];

}int dfn[n],cn;

void build(int x)

}int a[n];

bool cmp(int x,int y){return dfn[x]

AcWing 285 沒有上司的舞會

acwing 285.沒有上司的舞會 ural大學有n名職員,編號為1 n。他們的關係就像一棵以校長為根的樹,父節點就是子節點的直接上司。每個職員有乙個快樂指數,用整數 hi 給出,其中 1 i n。現在要召開一場周年慶宴會,不過,沒有職員願意和直接上司一起參會。在滿足這個條件的前提下,主辦方希望邀...

ACWing 285 沒有上司的舞會

給定一棵樹,節點編號1 n 1 sim n 1 n,每個節點有個權值,要求選出若干個點,使得沒有兩個點之間有邊,並且總權值和最大。問這個最大權值和。輸入格式 第一行乙個整數n nn。接下來n nn行,第i ii行表示第i ii個節點的權值。再接下來n 1 n 1n 1行,每行輸入一對整數l,k l,...

Acwing 285 沒有上司的舞會

ural大學有n名職員,編號為1 n。他們的關係就像一棵以校長為根的樹,父節點就是子節點的直接上司。每個職員有乙個快樂指數,用整數 h i hi 給出,其中 1 i n 1 i n 現在要召開一場周年慶宴會,不過,沒有職員願意和直接上司一起參會。在滿足這個條件的前提下,主辦方希望邀請一部分職員參會,...