1. 程式人生 > 其它 >GRYZ10.18模擬賽解題報告

GRYZ10.18模擬賽解題報告

寫在前面

期望得分:\(100+100+100=300pts\)
實際得分:\(100+100+10=210pts\)

掛了一個 \(0\) /cy

理想很豐滿,現實很骨感。

題挺沒意思的,第一題進位制,第二題二分+最短路,第三題原題,也是二分

下面來介紹一下我的做題過程:

14:00 開始。
14:15 讀完題,感覺今天的題都有點奇怪。
14:15 寫完 T1 並自己寫了一個 checker 對拍。
15:00 寫完 T2,然後發現 T3 是原題。
15:22 寫完 T3,然後一直划水。
中間又造了幾個極弱的樣例,感覺 T2,T3 都沒有問題。
17:30 考試結束,T3 掛了 90,原題啊原題!我掛了 90!我是不是菜?啊 我 是 不 是 菜 啊?

T1

你發現能填的數是 \(3^0,3^1,3^2...\),然後這個東西轉化成三進位制剛好對應著三進位制的每一位。

因為只能放一次嘛,你在想如果你把 \(W\) 轉化成三進位制後是 \(11010011...\) 的形式(只有 \(1\)\(0\)

你考慮把要處理的 \(W\) 來轉化成你想要的形式,怎麼辦?加砝碼!

假設 \(W\) 拆成三進位制後是 \(112001212022...\) 之類的,那麼你從低位向高位遍歷,如果第 \(x\) 為是 \(2\) 就加一個 \(3^{x-1}\) 的砝碼,然後進位。如果是 \(1\)\(0\) 就不用管,遍歷完就能得到我們想要的那個形式了。就可以直接得到左邊要加的砝碼。

T2

分層圖

這個題沒給 \(k\) 的資料範圍,\(k\) 大了應該能卡掉分層圖做法。

每用幾次免消耗體力的機會就是從上一層走到下一層。

然後就可以建 \(k\) 層圖,跑 Dij 和 SPFA 都行,記錄最大值即可。

二分答案

這個應該是正解。

二分答案 \(x\),把 \(w > x\) 的邊的權值看做 \(1\)\(w \le x\) 的邊的權值看做 \(0\),然後跑最短路。

如果 \(dis_n \le k\) 說明這個答案 \(x\) 合法,然後下調邊界,否則表示不合法,上調邊界。

T3

二分懲罰值,好像也叫什麼 wqs二分,洛谷原題