Atcoder AGC006 B F簡要題解

2021-09-12 03:32:21 字數 2171 閱讀 6602

構造題。

x =1

,2n−

1x=1,2n-1

x=1,2n

−1必然無解。

否則把x

xx放中間,x−1

,x+1

x-1,x+1

x−1,x+

1放左右,一定有解。

線性的期望可以拆開逐次算:

單獨考慮每次操作:

跳躍後a

ja_j

aj​的期望位置:aj+

1+aj

−1−a

ja_+a_-a_j

aj+1​+

aj−1

​−aj

​,發現:

a j+

1−aj

′=aj

−aj−

1,aj

′−aj

−1=a

j+1−

aj

a_-a_j'=a_j-a_,a_'-a_=a_-a_

aj+1​−

aj′​

=aj​

−aj−

1​,a

j′​−

aj−1

​=aj

+1​−

aj​原數列差分得到bj=

aj+1

−a

jb_j=a_-a_

bj​=aj

+1​−

aj​,a

ja_j

aj​的一次跳躍相當於swa

p(bj

,bj−

1)

swap(b_j,b_)

swap(b

j​,b

j−1​

) 那麼執行一次set

setse

t後相當於對b

bb進行了一次輪換。

求出所有輪換組。輪換組裡找m

mm次輪換後的位置是o(1

)o(1)

o(1)

的。二分答案,將

dd的數看作0

00,≥mi

d\geq mid

≥mid

的數看作111。

考慮從中間位置不斷向兩端拓展,若先遇到連續的2個0/1,則最後頂端必然為0/1,否則比較01的個數即可。

一些性質:

發現可以構造操作(記大寫字母與小寫字母為兩種正反狀態):

abcde -> cbade -> cbeda -> ebcda -> ebadc -> abedc -> abcde

cbade->abcde -> adcbe -> cdabe -> cbade -> abcde -> abcde(執行上面那串操作)

(懶於構造,直接貼題解)

2操作也就是說交換相鄰兩個奇偶性相同的列且保持正反狀態不變時,必然會使得乙個奇偶性不同的列正反狀態改變。

那麼模擬氣泡排序的過程(bit維護),計算奇數列和偶數列是否能達到目標矩陣的正反狀態。

(只需要反的列個數與目標矩陣反的列個數差為偶,因為可以通過1操作達到目標狀態)

把格點(x,

y)

(x,y)

(x,y

)看做點x

→x\to

x→點y

yy的一條有向邊。

則原圖的染色相當於由x→y

,y→z

x\to y,y\to z

x→y,y→

z得到z→x

z\to x

z→x。

發現只有每個弱連通圖內的點可能會增加連邊。

所以先把邊看成無向的,在劃分出的每個弱連通圖內計算貢獻:

基於對圖論題目本質的理解,題解中套用乙個很妙的方案——三染色:使得紅點連向黃點,黃點連向藍點,藍點連向紅點。

若無法染色,顯然圖會被連成完全圖,貢獻為n

2n^2

n2。若只能染出≤

2\leq 2

≤2種顏色,則不會有新連邊,貢獻為mmm。

否則設三種顏色點數分別為c1,

c2,c

3c_1,c_2,c_3

c1​,c2

​,c3

​,相應顏色之間的點均可以連邊,貢獻為c1c

2+c2

c3+c

3c

1c_1c_2+c_2c_3+c_3c_1

c1​c2​

+c2​

c3​+

c3​c

1​

Atcoder AGC006 解題報告

給出長度為 n 的字串 s 和 t 求乙個字串滿足 長度至少為 n 字首為 s 字尾為 t 請找出長度最短的這樣的字串並輸出他的長度 資料範圍很小,直接列舉判斷就好了。給出乙個 n 層的方格金字塔,自頂向下依次標號為第 1 到第 n 層。其中第 i 1 le i le n 層有 2i 1 個方格。第...

Atcoder AGC005 解題報告

有乙個字串 x 對它進行操作。該串只含 s 和 t 凡是 s 與 t 連在一起都要將它們一起去掉。現在進行若干次操作直到該串中沒有連在一起的 st 問剩下的長度。考慮用對頂棧模擬。先將所有的字串加入右棧中。依次將乙個字元從右棧中彈出,加入左棧。如果在任意時刻,出現了左棧頂是 s 而右棧頂是 t 那麼...

Atcoder AGC004 解題報告

用若干個 1 times 1 times 的小方塊 立方體 組成乙個 a times b times c 的大長方體,每個小方塊可以塗成紅色或藍色,但要滿足以下要求 至少有 1 個紅色方塊與 2 個藍色方塊。所有的紅色方塊必須組成乙個長方體。所有的藍色方塊必須組成乙個長方體。求所有滿足要求的染色方案...