博弈論專練

spdarkle發表於2024-10-04

ABC261Ex

顯然有一個倒序DP

\[\begin{cases} f_{i,0}=\min_{i\to j}f_{j,1}+w(i,j)\\ f_{i,1}=\max_{i\to j}f_{j,0}+w(i,j)\\ \end{cases} \]

目標 \(f_{S,0}\)

可以看作用 dijkstra 跑最短路。

\(f_{i,1}\) 的所有 \(f_{j,1}\) 確定時才確定 \(f_{i,1}\),再將其扔到最短路里面跑。

如果無法確定一個f,就說明它後續會一直更新?

首先邊界是可以確定的

那麼min如果欽定只能由已經OK的1來轉,一定是正確的,後續的1不可能更新它

而更新完了的1也是可以如此操作的

agc048D

可以發現的是,當某一堆無窮多的時候,先拿到這一堆的人獲勝,因為它可以磨到另一個人操作完

打個爆搜看看

我們發現若固定局面不變,單獨增加第一堆的個數,其勝負呈現00000000000001111111111111,單獨增加最後一堆其勝負呈現111111111111110000

說明這玩意單調。。。。。。。。。。。

那考慮維護分界點,設f[l,r],g[l,r]分別表示當前先手,若先手贏得[l,r],則當前第一堆最少需要 \(f[l,r]\) 個,當前後手,若後手贏得 \([l,r]\),則當前最後一堆至少需要 \(g[l,r]\)

但是有什麼轉移的規律嗎

顯然有單調性隨著端點移動

打一個 \(f[l,r]\)\(g[l,r]\) 的表看看

發現

\(f[l,r]=a[r]-g[l+1,r]+1+f[l,r-1]\),當 \(g[l+1,r]>a[r],f[l,r]=1\)

arc116F

顯然ICG

顯然的一個貪心策略是刪除兩端對於自己而言不優的那個元素。

顯然我要大的肯定是刪小的,反之同理

顯然每個獨立,不然可以交換操作順序,會搶

而且一定有辦法讓答案取到中間的數字,且這樣做應當是最優的

那麼當n是偶數的時候,顯然是留下 \(mid,mid+1\) 裡對先手有利的一個,因為最後一步是先手

否則n是奇數的時候,mid顯然是可以保留的,但是後面後手可以想辦法讓你取小的,所以應該是\(a[mid],(a[mid+1].a[mid-1]\) 裡較先手優的)中較先手劣的

所以長度為奇數的顯然獨立操作不影響先後手,而長度為偶數的顯然也是輪流操作

然後長度為偶數的會交替先後手,所以應該按照貢獻貪心取?

考慮列舉第一步進行的操作之後能夠得到的答案

先手肯定取較大者,後手肯定取較小者,設弄出這玩意是 \((a,b)\)

考慮鄰項交換,\((a[i],b[i])\)

如果交換前更優,且先是先手操作就有 \(a[i]+b[i+1]>a[i+1]+b[i]\implies a[i]-b[i]>a[i+1]-b[i+1]\)

排序取即可。

做完了?

做完了。

「省選聯考 2023 day2」過河卒

智障模擬題,直接不講

「HAOI2015」陣列遊戲

根據翻硬幣遊戲的結論,我們只關心最開始的白棋位置,變為求解若干 100000000 局面的 \(sg\) 值。

長度應當是某個 \(\lfloor\frac{n}{x}\rfloor\) ,所以共有 \(O(\sqrt n)\) 種不同 SG值。

對於每種值,我們考慮其後繼局面,例如 10000,其後繼是 00000,01000,01100,01110,01111,相當於是這些局面的 \(mex\)

發現每個局面的 \(sg\) 值是一個字首異或和,從當前白棋位置開始,最初是 \(0\)。利用數論分塊再最佳化即可。

複雜度應當是 \(O(n^{\frac{3}{4}})\) 級別的,也不太會證明。

相關文章