Atcoder AGC010 B F簡要題解

2021-09-12 06:52:49 字數 2197 閱讀 6777

首先操作次數m=∑

an(n

+1)2

m=\dfrac}

m=2n(n

+1)​

∑a​。

考慮差分得到di=

ai−a

i−

1d_i=a_i-a_

di​=ai

​−ai

−1​,對於一次以i

ii開始的操作,d

id_i

di​的變化是n−1

n-1n−

1,否則變化是−1-1

−1。全部取完後di=

0d_i=0

di​=

0,所以設i

ii第一種操作做了x

ix_i

xi​次,第二種操作做了m−x

im-x_i

m−xi

​次,xi(

n−1)

−(m−

xi)+

di=0

→xi=

m−di

nx_i(n-1)-(m-x_i)+d_i=0\to x_i=\dfrac

xi​(n−

1)−(

m−xi

​)+d

i​=0

→xi​

=nm−

di​​

最後檢查是否滿足∑xi

=m

\sum x_i=m

∑xi​=m

且按照操作i

ii得到的數=ai

=a_i

=ai​

即可。特判n=2

n=2n=

2的情況,其餘情況必然存在乙個點度數》

1>1

>

1,將其作為根。

轉化模型:

將每個葉結點上的a

ia_i

ai​個石子看做a

ia_i

ai​個插頭,每次插頭沿著結點父邊向上走。

對於非葉結點,所有來自不同兒子結點的插頭可以兩兩合併成乙個**頭後停留在這個結點,剩餘的單插頭則繼續向上走,且在這個結點上最多只能容納a

ia_i

ai​個單/**頭。

判斷是否能夠使得所有非葉結點上都能恰好容納a

ia_i

ai​個插頭,且最後不剩下單插頭。

具體處理:

設對於非葉結點i

ii,一共傳上來f[i

]f[i]

f[i]

個單插頭,假設其中合併成了a

aa個**頭,剩下f[i

]−2a

f[i]-2a

f[i]−2

a個單插頭,且傳上來單插頭最多的乙個兒子傳了mxmx

mx個插頭:

f [i

]−ai

>

min⁡(f

[i]−

mx,⌊

f[i]

2⌋

)f[i]-a_i>\min(f[i]-mx,\lfloor\frac\rfloor)

f[i]−a

i​>

min(f[

i]−m

x,⌊2

f[i]

​⌋)則無解,否則上傳2ai

−f

i2a_i-f_i

2ai​−f

i​個單插頭即可。

考慮數中有1

11的最終態,設所有數之和為sum

sumsu

m:若s um

−n

sum-n

sum−

n為奇數,則必勝,否則必敗。

對於數中沒有1

11的情況:

對於初始局面分類討論:

假設先手已經排好序了,那麼答案就是最大字典序拓撲。

考慮如何構圖使得最大字典序拓撲最小:

由於n

≤2000

n\leq 2000

n≤2000

,暴力將兩兩互質的數之間連一條無向邊,建立dfs

dfsdf

s森林(每次選字典序最小的走)。對新圖拓撲排序即可。

博弈論只需要從終態p

pp往前推,具體判定方法:

列舉根進行dfs

dfsdf

s判定每顆子樹的n/p狀態:

如果乙個子樹必勝,那麼必定存在根的乙個兒子是必敗結點,且權值小於根。

正確性顯然(移到兒子後不移回來肯定必勝,否則不停地在這條邊上移動最後兒子權值還是會變成0)

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 個藍色方塊。所有的紅色方塊必須組成乙個長方體。所有的藍色方塊必須組成乙個長方體。求所有滿足要求的染色方案...