KEYENCE Programming Contest 2021


D

對於一個序列,相同的對數有\(2{2^{N-1}\choose 2}\),不同的對數有\((2^{N-1})^2\)
假設選了\(len\)個序列,那么應該滿足:

\[\begin{aligned} len\cdot 2{2^{N-1}\choose 2}=n\cdot {2^N\choose 2}\\ len\cdot (2^{N-1})^2=m\cdot {2^N\choose 2} \end{aligned}\]

通過移項可得:\(n:m=2^{N-1}-1:2^{N-1}\)

\(n=2^{N-1}-1\)\(m=2^{N-1}\)帶入上式,會得到\(len=2^{N}-1\),故這是\(len\)的下界(同時也說明\(2^{N}-1|len\)

我們通過構造一種方式,證明答案可以為\(2^{N}-1\)

\(i\)個序列(\(i=1\sim 2^N-1\)
\(j\)位置上(\(j=0\sim 2^N-1\)),若\(\text{popcount} (i\And j)\)為偶數則填'A',為奇數則填'B'
對於任意\(N\)長度的二進制,\(i\)僅缺失了\(0\),故容易證明這個構造滿足\(n=2^{N-1}-1\)\(m=2^{N-1}\)

E

snuke在當前輪直接選取,那么狀態會非常不好記錄
我們保留snuke在之前輪,選擇放棄暫時不選的次數,然后等螞蟻走到這來了再選
雖然這個跟原游戲不同,但顯然其不會優於最優解,也包含最優解

\(f_{l,r,k}\)\((l,r)\)全部被選了,snuke還可以選\(k\)次的最優解

兩種轉移方式(填表法):

  • 滿足\(k>0\),那么snuke可以選擇\(l\)\(r\),則用\(f_{l-1,r,k-1}+a_{l}\)\(f_{l,r+1,k-1}+a_{r}\)轉移
  • 目前snuke不選擇,則對手選擇
    那么用\(f_{l-1,r,k+1}\)\(f_{l,r+1,k+1}\)轉移(按照題意,這里的轉移是固定的,取\(a_l,a_r\)中較大的一個)

code

F

感覺講起來比較麻煩,就不寫題解了...
code


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM