gym102586 部分題解



link
出於某種原因,本篇博客不提供代碼。


Evacuation

考慮設 \(f(l,r,x)\) 表示當前詢問區間為 \([l,r]\)\(S\) 個人都訪問 \(x\) 時候的答案。
顯然是先枚舉距離填滿帳篷,然后如果距離枚舉到 \(\min{x-l-1,r+1-x}\) 還沒放置完所有人,就全部跑到 \(l-1/r+1\) 去避難。
發現最后當 \(x\in[l,mid]\) 的時候到 \(l-1\) 避難,當 \(x\in[mid+1,r]\) 的時候到 \(r+1\) 避難。
這樣的話,當 \(x\in[l,mid]\) 的時候,最小代價跟 \(r\) 沒有關系,在 \([mid+1,r]\) 的時候同理。
設這個代價是 \(f_{left}[l,x]\),我們要求 \(\max_{x=l}^{mid}{f_{left}[l,x]}\)
這個問單個 \(x\) 可以通過預處理前綴和做到 \(O(1)\),現在已經有了 \(O(n^2)\) 的做法簡直和暴力一樣優秀,顯然過不去。
但容易發現它滿足決策單調性,於是搞一個線段樹+分治優化決策即可。


Sum Modulo

編了一年才知道哪里寫假了...
發現有遞推式 \(f_m=\sum\limits_{i=1}^nf_{m-i}a_i+1\),然后可以線性遞推出 \(f_{M+1}...f_{M+n-1}\) 關於 \(f_{1},f_{2}...f_{n-1}\) 的線性表示。
高斯消元解出 \(f_{1}...f_{n-1}\) 然后再跑一次線性遞推。


Count Modulo 2

\(f(x)=\sum\limits_{i=1}^nx^{a_i}\),發現是求 \([x^s]f(x)^n\mod2\),然后會發現 \(f(x)^{2^i}\equiv \sum\limits_{j=1}^nx^{a_j2^i}\mod2\),然后壓位 dp 一下就完事了。
多測不清空,爆零兩行淚。


Robots

這個東西顯然有下界是 \(\sum\limits_{i=1}^n|a_i-b_i|\), 然后開動腦筋構造出一個符合條件的方案即可。


Construct Points

隨便構造一組斜率相近的直線。


Amidakuji

發現題目中有個 \(\log\) 就開始想二進制構造。
首先發現 \(\sum\limits_{i=0}^{?}\pm2^i\) 是可以湊出所有在上界內的偶數的。
然后這道題里面把置換環的邊看成無向邊就非常好構造。
所以如果 \(n\) 是奇數,我們的第 \(i\) 個置換搞成 \(x\rightarrow x+2^i\mod n\),這樣在模意義下可以湊出任意值。
現在考慮 \(n\) 是偶數的情況怎么修。
發現在所有操作完之后會改變奇偶性,於是需要建立一個置換,使得奇數能變成奇數/偶數,偶數也是。
考慮每 \(4\) 個分一組,連邊 \(x\rightarrow x+2\rightarrow x+3\rightarrow x+1\rightarrow x\)
這樣就能搞定 \(4|n\) 的情況。
\(n\equiv2\mod 4\) 的時候,最后兩個沒法搞定,我們再隨便建一個新的置換上去即可,比如對於前 \(n-4\) 個有 \(x\rightarrow x\),最后四個跟剛剛一樣構造。


Yosupo's Algorithm

直接暴力枚舉點對算貢獻不是非常優秀,考慮優化枚舉的點對數。
顯然能想到關於 \(y\) 坐標進行分治。
經過簡單分類討論容易發現如果該點對有用,那么一定至少有一個點的權值在當前范圍內該顏色點中是最大的,於是總點對數是 \(O(n\log n)\) 的。
掃描線即可。


免責聲明!

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



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