牛客 2018多校演算法第五場D 集合問題 並查集

2022-05-01 15:24:14 字數 716 閱讀 7821

集合問題

題意:給你a,b和n個數p[i],問你如何分配這n個數給a,b集合,並且滿足:

若x在集合a中,則a-x必須也在集合a中。

若x在集合b中,則b-x必須也在集合b中。

思路:並查集操作,自己主要是沒想到用map去對映1e9-->1e5;

#include #include 

#include

#include

#include

#include

using

namespace

std;

const

int maxn = 1e5+7

;int

n,a,b,fa[maxn],a[maxn];

mapmp;

void

init()

int find(int

x)void uni(int x,int

y)int

main()

if(max1>=max(a,b))

else

int af = find(0

);

int bf = find(n+1

);

if(af==bf)

else

printf("\n

");}

}return0;

}

牛客 2018多校演算法第五場C KMP

字串的問題 在原來的字串中字首與字尾相同,且原來的中間還含有這個子串 這裡加的num 陣列真是太厲害了,可以直接用來判斷中間是否有子串 include include include include include using namespace std const int maxn 1e6 7 i...

2018牛客多校第五場 H subseq

傳送門 這場樹狀陣列用法專場,skydec說這題很套路的題,很簡單,然而處理處dp陣列後最後的貪心我想了半天還問了一蛤別人,菜不成聲.jpg,先處理出dp陣列,dp i 表示以a i 為開頭的從i到n的所有遞增子串行的方案數,本來應該用線段樹了,然而好多人使用了神奇的樹狀陣列,以前都是add函式從i...

2020牛客多校第五場 D

題意,有兩個操作,求你最少使用的段數 連續使用1操作包括1次也稱為1段 對於操作1 我們可以把 1 n 1看成是乙個環,操作一次,環轉一次。對於操作2 我們可以把1 n 看成是乙個環,操作一次,環轉一次。每使用多次包括1次操作1 之後 再使用多次包括1次操作2 就可以把某些數放到最後乙個數的後面,即...