牛客練習賽39D

2022-04-06 10:54:21 字數 658 閱讀 4771

首先操作2用並查集就行了。題解說的好啊!

考慮操作一,連的兩個點如果同色,直接合併,然後這個顏色的聯通塊-1,然後合併bitset,就是或一下。bitset維護的是相連的異色結點。

如果兩個點異色,那麼我們就不管他們,直接在兩個bitset裡分別把對方設為1。

對於操作三 直接 (b[x]&b[y]).count(); 就行了。

1 #include 2

using

namespace

std;

3const

int n = 5e4+5;4

intfa[n];

5 bitset<50001>b[n];

6int find(inta)9

intn,m,op,x,y,c[n];

1011

intmain()

19 bai=n-hei;

20while (m--) else

34 } else

if(op==2

) else45}

46}47 }

view code

牛客練習賽39

b 進行根 右 左的樹遍歷。然後求最長上公升子串行長度。include include include include include include includeusing namespace std define ll long long const int maxn 2e5 22 int t...

(dfs LIS)牛客練習賽39 選點

時間限制 c c 1秒,其他語言2秒 空間限制 c c 131072k,其他語言262144k 64bit io format lld 有一棵n個節點的二叉樹,1為根節點,每個節點有乙個值wi。現在要選出盡量多的點。對於任意一棵子樹,都要滿足 如果選了根節點的話,在這棵子樹內選的其他的點都要比根節點...

牛客練習賽24 D

名字挺有意思的,排插樹,雖然這是個圖。算dijkstra的模版題,求最短路裡面最長的那條,因為到講台的距離總是取決於最短的那條路,但是又要求離講台最遠,那麼我們通過dijkstra計算出起始點到所有點的最短路然後遍歷找最大值就好。如下 include using namespace std type...