AcWing 239 奇偶遊戲 邊帶權並查集

2021-10-09 10:17:31 字數 2754 閱讀 9330

題意

有乙個長度為 n

nn 僅由0和1組成的序列。有 m

mm 個問題和回答:在區間 [li

,ri]

[l_i,r_i]

[li​,r

i​] 內有奇數個或者偶數個 1

11 。

輸出乙個整數 k

kk ,表示這個01序列滿足 1∼k

1\sim k

1∼k 個回答,但不滿足 1∼k

+1

1\sim k+1

1∼k+

1 個回答。如果滿足所有回答,則輸出問題的總數量。

解法維護 1

11 的數量的字首和的奇偶性 s[i

]s[i]

s[i] 。

**

#pragma region

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

#define rep(i, a, n) for (int i = a; i <= n; ++i)

#define per(i, a, n) for (int i = n; i >= a; --i)

namespace fastio

inline

charnc(

)}return

*p1++;}

inline

bool

blank

(char ch)

template

<

class

t>

inline

bool

r(t &x)

inline

boolr(

double

&x)if

(sign)

x =-x;return

true;}

inline

boolr(

char

*s)inline

boolr(

char

&c)return

true;}

template

<

classt,

class..

. u>

bool

r(t &h, u &..

. t)

#undef out_size

#undef buf_size};

// namespace fastio

using

namespace fastio;

template

<

class

t>

void_w(

const t &x)

void_w(

const

int&x)

void_w(

const

int64_t

&x)void_w(

const

double

&x)void_w(

const

char

&x)void_w(

const

char

*x)template

<

classt,

class

u>

void_w(

const pair

&x)template

<

class

t>

void_w(

const vector

&x)voidw(

)template

<

classt,

class..

. u>

voidw(

const t &head,

const u &..

. tail)

#pragma endregion

const

int maxn =

2e4+5;

int n, m;

int fa[maxn]

, d[maxn]

;int a[maxn]

, b[maxn]

;char op[maxn][10

];intfindroot

(int x)

void

link

(int x,

int y,

int f)

bool

check

(int x,

int y,

int f)

intmain()

memcpy

(b, a,

sizeof

(a))

;sort

(b +

1, b +1+

2* m)

;rep

(i,1,2

* m) a[i]

=lower_bound

(b +

1, b +1+

2* m, a[i]

)- b;

rep(i,

1, m)

w(m)

;}

AcWing 239 奇偶遊戲 並查集,拓展域

題意 有乙個長度為 n nn 僅由0和1組成的序列。有 m mm 個問題和回答 在區間 li ri l i,r i li r i 內有奇數個或者偶數個 1 11 輸出乙個整數 k kk 表示這個01序列滿足 1 k 1 sim k 1 k 個回答,但不滿足 1 k 1 1 sim k 1 1 k 1...

邊帶權並查集 acwing 238

有n列戰艦,有兩種操作,第一種,把一列戰艦放在另一列的後面,也就是合併操作,第二種是查詢操作,問兩個戰艦是不是在同一列,如果是的話,就輸出它們之間隔了多少個戰艦,如果不是就輸出 1.用乙個陣列表示是不是在乙個集合裡,然後用另乙個陣列d表示每一列的大小,還有乙個陣列siz表示邊的權值。d是到祖先的距離...

奇偶遊戲 帶權並查集

奇偶遊戲 首先需要知道異或這種東西 兩個數異或的結果是什麼 兩個數按位做差的絕對值 異或相當於 模2 做加法 只看最後一位 例如 5 101 3 011 只看最後以為為0 就是偶數,奇數加奇數為偶數,這一題用到此方法 1個數異或自己為0 乙個數異或0 還是自己 定義s i 為前i個數又多少個奇數1 ...