這個題目,在考場上我沒有做不出來,說實話,開始的時候,我都沒看出來這是個二分!這個題目因為資料範圍給的很難受(n*m<=?,而不是n<=…&&m<=…),所以我們在求每一列的字首和的時候,我們可以抽象成一維來做。
我們設答案為ans,ans=sum/h(sum為挖過的所有金礦的價值之和,h為挖過的金礦的個數)->sum-ans*h=0,基於這個式子,我們可以二分答案,在每一列取max,使得整個的答案是最優的。不斷進行二分,這樣就可以得出答案。
**如下:
#include
#include
#include
using
namespace
std;
const
int maxn=200005;
int num[maxn];
long
long sum[maxn];
int n,h,k;
bool check(int mid)
if(s>=0)
return
true;
else
return
false;
}int main()
while(r-l>0.000001)
printf("%.4lf\n",mid);
return
0;}
開啟你的腦洞
我的大學是在北京師範大學讀的,當時讀的乙個叫做 勵耘實驗班 的專業 現在已經取消了 美其名曰第一年進行通識教育,第二年選專業。我最終選擇了計算機專業,並且有幸和一群不同專業的室友一起生活了四年。其中乙個室友選了 數字 專業,他在專業學習過程中,需要每天看各種電影,分析各種電影片段的拍攝手法。那個時候...
Javascript的腦洞(一)
無窮大的數 var a 12 0 if a infinity 既然js的變數實際都是某種引用 存放物件的位址 那麼a這個名字的背後可以存放任意東西,包括無窮大這個值。但是js在這裡直接違背了數學規律,讓0除的結果變成無窮大,真實腦洞大開!如果設計成nan值,也更好理解吧?undefined被定義 u...
腦洞 整體分塊 BSGS
ran 讓 ei 刷整體二分的題,並且丟給 ei 一道 zjoi2013 k大數查詢。但是 ei 並不想寫整體二分。也不想寫資料結構。於是一拍腦門,就有了這個奇怪的想法。大致思路 對於 c cc 先離散化,然後考慮乙個類似 bsgs 的找答案的過程 將從大到小的 c cc 分成 m sqrt m m...