Noip 模擬 18 2018/11/6
T1:merchant 有 n 個物品,第 i 個物品有兩個屬性 ,表示它在時刻 x 的價值為 . 當前處於時刻 0,你可以選擇不超過 m 個物品,使得存在某個整數時刻 t, t >= 0,你選擇的所有物品的總價值大於等於 S. 給出 S,求 t 的最小值。 第一眼二分,但是一看,發現好像不單調 其實還是單調的 假設如果是單峰的情況(也就只有這種情況不單調),那麼可以發現, 的時候一定是最優的,否則單調 那麼就是需要特判一下 的情況 判斷時,需要選取前 m 大的,直接 sort 會 TLE(蒟蒻自帶大常數),可以用 STL 中的 nth_element,期望 的情況下給出前 m 大的
T2:排列計數 (permutation) 求有多少個 1 到 n 的排列滿足恰有 k 對在排列中相鄰的數滿足前小於後,答案對 2012 取模。 發現 可以過 二維 dp 表示選到第 個數,有 對的方案數 如果第 個產生了一個新的對,那麼有 個位置可以放 如果第 個沒有產生了一個新的對,那麼有 個位置可以放 所以
T3:最短路(shortest) 給出一個 n 個點 m 條邊的無向圖,n 個點的編號從 1~n,定義源點為 1。定義最短路樹如下:從源點 1 經過邊集 T 到任意一點 i 有且僅有一條路徑,且這條路徑是整個圖 1 到 i 的最短路徑,邊集 T 構成最短路樹。 給出最短路樹,求對於除了源點 1 外的每個點 i,求最短路,要求不經過給出的最短路樹上的 1 到 i 的路徑的最後一條邊。 可以發現,一條非樹邊只會對這條邊的兩個端點到他們的 lca 產生影響 設 表示 的最短路徑即樹上路徑 , 為一條非樹邊且 或 是 的子節點 那麼就將非樹邊按 排序,對於修改過的節點,用並查集壓縮路徑,保證每個節點只會被最小的值更新一次