Codeforces Round #569 題解


Codeforces Round #569 題解


CF1179A Valeriy and Deque

有一個雙端隊列,每次取隊首兩個值,將較小值移動到隊尾,較大值位置不變。多組詢問求第\(m\)次操作時隊首兩個數。


顯然\(O(n)\)次以內隊首變成了最大值,之后就循環了,暴力前\(O(n)\)個操作的答案即可

https://codeforces.com/contest/1179/submission/55878330


CF1179B Tolik and His Uncle

有一個\(n*m\)的網格圖,你在\((1,1)\)。你要遍歷一遍這個網格圖,正好經過每個點一次。唯一的限制是每次移動的移動向量不能相等,求方案。


顯然有解。

一種構造方案是每次取第一行和最后一行,假設是格子\(a_1,\cdots,a_m\)和格子\(b_1,\cdots,b_m\)。向方案中加入\(a_1,b_m,a_2,b_{m-1},\cdots,a_m,b_1\)。只剩一行的時候假設是格子\(a_1,\cdots,a_m\),加入\(a_1,a_m,a_2,a_{m-1},\cdots\)(交替選第一個數和最后一個數)。

證明顯然

一種好寫的實現方法構造兩個數列\(s_{1,1},s_{1,2},\cdots,s_{1,m},s_{2,m},s_{2,m-1},\cdots s_{2,1},s_{3,1},\cdots\)\(s_{n,m},s_{n,m-1},\cdots,s_{n,1},s_{n-1,m},s_{n-1,2},\cdots s_{n-1,m},s_{n-2,m},\cdots\),交替選第一個坐標直到\(n*m\)個為止。

https://codeforces.com/contest/1179/submission/55878330


CF1179C Serge and Dining Room

(題面萬惡的zbzy真的23333....

食堂里有\(m\)名同學排成一隊,還有\(n\)個菜。因為萬惡的zbzy,所以每個菜只有一個,被取完就沒了。第\(i\)個菜價格為\(a_i\)元,第\(j\)個同學有\(b_i\)元。

開始打飯時,從同學\(1\)到同學\(m\)依次打飯。每個同學會買下他能買得起的價格最高的菜(萬惡的zbzy),如果啥都買不起就啥都不買(萬惡的zbzy)

每次會修改\(a\)\(b\)中的一個值,然后詢問如果現在開始打飯,剩下的菜中價格最高的。不存在輸出-1。


(當時真的腦抽了先想了個樹套樹然后又整體二分然后主席樹。。。。后來發現一個線段樹就行了233

搞一個線段樹,對\(a_i\)的位置\(+1\),對\(b_i\)的位置\(-1\)

詢問就是最大的左端點\(l\)使得區間\([l,\infty)\)的最大后綴和\(>0\),不存在即為-1。

https://codeforces.com/contest/1179/submission/55890192


CF1179D Fedor Runs for President

有一棵樹,你要增加一條邊(可以重邊,不能是自環)使得新圖的簡單路徑(不同的定義是邊集不同)數量最大。


我也不知道怎么就切了。。。

瞎猜結論,按照求直徑的方法搜兩遍就切了。。。。。好像還是對的。。。。(差點gm了

https://codeforces.com/contest/1179/submission/55895158


CF1179E Alesya and Discrete Math

交互題。

定義\(f(x)\)是好的當且僅當若\(f(x)\)\(x\)\(x-1\)處都有定義,滿足\(f(x)=f(x-1)\)\(f(x)=f(x-1)+1\)

\(n\)個好的函數\(f_1,f_2,\cdots,f_n\),都滿足

  1. 定義域是\([0,10^{18}]\cap \mathbb{Z}\)
  2. \(f(0)=0,f(10^{18})=L\)

這些函數都是確定的,你每次可以詢問一個\(f_i(x)\)。你最多提出\(200000\)次詢問。交互器不是依賴型的。

還滿足\(n|L\)

對每個函數\(f_i\)你需要選擇一個區間,即\([l_i,r_i]\)。需要滿足\(f_{i}(r_{i}) - f_{i}(l_{i}) \geq \frac{L}{n}\)

而且還要滿足任意兩個區間的交為空或只有一個端點。


首先有一個naive做法:設有\(n\)個函數,在值域\([L,R]\)中求答案。先對每個函數\(f_i\)二分出一個\(x_i\)使得\(f_i(x_i)=\lfloor \frac{L+R}2\rfloor\),然后把函數按\(x_i\)排序,取中間的函數,遞歸下去\(f_{1\cdots mid}\)值域是\([L,f_{mid}(x_{mid})]\)\(f_{mid+1\cdots r}\)值域是\([f_{mid}(x_{mid}),R]\)

然后遞歸做。

(后面部分還沒切,不保證正確性

但是這樣太慢了,換一個做法。每次隨機一個函數\(f_p\),二分出\(x_p\),對其他的\(f\)計算\(f_i(x_p)\),即可知道\(x_i\)\(x_p\)的大小關系。做完之后將函數分成了兩邊在大的一邊繼續找答案。

咕了咕了這題太屎了


免責聲明!

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



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