題解 CF1175C 二分 貪心

2022-09-09 23:27:38 字數 689 閱讀 8033

題目鏈結

考慮二分答案,判定條件等價於存在乙個 \(x\) 滿足存在 \(\ge k\) 個位置滿足 \(|a_i-x|\le mid\) 。

考慮固定 \(x\) ,那麼要統計的即在 \([x-mid,x+mid]\) 這個範圍內的 \(a_i\) 的個數。

對於這個問題有兩個解決辦法:

直接做我們發現很難,正難則反。

因為覆蓋的範圍是一段區間,所以考慮列舉區間判定這段區間存不存在乙個 \(x\) 能夠覆蓋該區間。

將所有 \(x\) 覆蓋的範圍看成乙個滑動視窗,那麼其實等價於check某段區間能不能被值域上長度為 \(2\times mid +1\) 的滑動視窗覆蓋。

只要值域上區間的長度 \(\le 2\times mid+1\) 即可。

並且我們發現其具有單調性,直接雙指標就可以在 \(o(n)\) 的時間內check

總的複雜度為 \(o(n\log a_i)\) 。

對於乙個固定的 \(x\) 能夠覆蓋的值域區間 \([x-mid,x+mid]\) 覆蓋的最靠左的點的值為 \(pos\) 我們將區間左端點固定為 \(pos\) ,\([pos,pos+2\times mid]\) 一定不劣。

因此值域左端點一定可以是 \(a\) 中的元素。

因此我們可以直接列舉值域左端點雙指標維護右端點。

**記錄

CF732D Exams 二分 貪心

思路 二分 貪心 提交次數 10次以上 錯因 剛開始以為二分 邊界,1or 1 寫錯了,調了半天,後來才發現是 ck 寫錯了。開始只判了最後是否小於零,而應該中間一旦小於零就 return space false 題解 二分天數 單調性顯然 ck int x 首先 x 天內必須包含所有科目 然後貪心...

二分貪心 21

題目大概 有n堆積木,積木高度不同,每個小方塊高度相同。問,最少移動多少小方塊,使得這些積木堆高度相等。思路 先求這些積木的平均數,在把所有的高度與平均數的差值加起來,最後除2,就是最少移動的方塊數。感想 這個題有一點很坑人,最後輸出的時候有乙個小點,不注意看看不到。include include ...

二分貪心 E

題目 輸入n和c,n代表有n間屋子c代表有c頭牛,然後輸入n個數代表這n間房子的座標,牛不喜歡這個布局,一進去就會很暴躁,所以要把牛分的盡可能的遠求最近兩頭牛的最大距離。解題思路 建立乙個陣列存這些房子的座標,然後用sort將這些座標排序,然後令l 0,r a n mid l r 2,先用mid當作...