CODEVS2744 養魚喂妹子 二分 貪心

2022-09-02 01:57:06 字數 836 閱讀 9270

傳送門

思路:加上能夠養活x個妹子,那麼必定能養活

我們二分能夠養活的最大的妹子數量。對於當前已經符合check函式的mid,ans一定在[mid,r]的區間內,

因此採用 mid=(l+r+1)>>1;if(check(mid)) l=mid;else r=mid-1; 最終答案為 l-1。

關於check函式,我們用一種類似均分紙牌的做法:遍歷每個城鎮,若當前城鎮缺魚,就向右邊要;注意,若當前城鎮多魚,你能給右邊不就給嗎。。。

最後看下最後乙個城鎮是否缺魚。

tips:二分邊界要搞好,可以直接[0,+inf],畢竟人家是o(logn)。

ac code:

#include

#include

#include

using

namespace

std;

const

int n=100000+10

;typedef

long

long

ll;ll pos[n],a[n],b[n];

intn;

bool

check(ll mid)

return b[n]>=0; }

intmain()

ll l=0,r=1

<<30;//

!!while(lprintf(

"%lld

",l);

return0;

}

CODEVS 2744 養魚喂妹紙

題目描述 description 在某島國,大多數居民都是漁民,這個國家的所有城鎮都沿直線分布在海邊。漁民們捕獲大量的海魚,但就象世界上大多數的漁民一樣,他們並不喜歡吃魚,所以他們決定從 收養一些貧困家庭的女孩紙,讓她們來幫著吃魚,順便 和諧 國家規定每個城鎮收養的貧困妹紙數量必須相等,這樣才能建設...

Codevs 2744 養魚喂妹紙 二分

codevs 2744 養魚喂妹紙 二分有多少個妹紙。驗證 mid 個妹紙 遍歷整個國家的城鎮 如果 第 i 個城鎮的 魚不足以養活 mid 隻妹紙,那麼我們朝 第 i 1 個城鎮借魚來使第 i 個城鎮恰好能養活 mid 隻妹紙,則第 i 1 個城鎮的魚的數量應該減去 去 i 城鎮路上所花費的魚 第...

百練 2744子串

描述 現在有一些由英文本元組成的大小寫敏感的字串,你的任務是找到乙個最長的字串x,使得對於已經給出的字串中的任意乙個y,x或者是y的子串,或者x中的字元反序之後得到的新字串是y的子串。輸入 輸入的第一行是乙個整數t 1 t 10 t表示測試資料的數目。對於每一組測試資料,第一行是乙個整數n 1 n ...