感覺自己現在的水平太窪了,連二分這種題都要調好久。感覺二分總是寫不對啊,我真是太水了。。。
在n個數之中插入k個數,使得相鄰的兩個數之間的差值的最大值最小。
像這種最大值最小型別的題目,都是考慮使用二分策略;
但是這道題我在第一次做的時候卻想錯了,我使用的貪心,我將相鄰的兩個數之間的差值進行排序,然後每次選出差值最大的一組數,然後從他們中間插入乙個數。
這樣做的錯誤性在於 忽略了相鄰的差值最大 這個條件。
但是,我學會了使用priority_queue (也就是乙個大根堆) 這個stl stl**好
priority_queue 定義:priority_queue
例如:priority_queue , cmp>
其中vector
是乙個容器,必須是用陣列實現的容器,比如vector,deque等等,但不能用 list。stl裡面預設用的是vector。cmp
是自己寫的比較函式。
正解二分列舉所有可能的結果,然後對結果進行檢驗,並及時調整左右指標。這就是二分的一般做法。
但是,我的二分在寫的時候死活過不去了,就先仍在這裡吧(大霧
while (l <= r)
else t = a[i];
} if (total > k) l = mid + 1;
else r = (ans = mid) - 1;
}
正解是這個樣子的:
while(le<=re) //二分
poj 3122 二分水題
題意不難 有n塊高度都為1但底面半徑為r不等的圓柱體乳酪,作者邀請了f個朋友參加了他的party,他要把這些乳酪平均分給f 1人,每個人分得乳酪的體積必須相等 這個值是確定的 形狀就沒有要求。現在要你求出所有人都能夠得到的最大塊乳酪的體積是多少 直接二分即可 下界為0,即每人都分不到pie 上界為m...
和為給定數 二分水題
1.簡單題目敘述 蒜頭君給出若干個整數,詢問其中是否有一對數的和等於給定的數。輸入格式 共三行 第一行是整數 n 0第二行是 n 個整數。整數的範圍是在 0 到 2 10 8 之間。第三行是乙個整數 m 0 m 2 30 表示需要得到的和。輸出格式 若存在和為 m 的數對,輸出兩個整數,小的在前,大...
魔法水 二分
description 行c列的網格s 每個小格仔要麼有乙個需要去打敗的匈牙利樹蜂龍,要麼是他的老師斯內普離開他時留下的一瓶魔法藥水。有龍的格仔 i,j 需要花費 s i j 的力量點,而有魔法藥水的格仔 i,j 可以恢復哈利波特 s i j 的力量。如果哈利波特的力量在任何時候掉到了0 或更少,那...