COCI2008 猴子摘桃

2021-07-14 21:35:06 字數 895 閱讀 7409

動物園內最受歡迎就是猴子了,因為它們除了能爬能跳外還會很多技能。其中a類猴子特別擅長爬樹摘桃,而b類猴子擅長把桃子掰成兩半。

a類猴子有n只,編號為1到n,b類猴子有m只,編號為1到m。a類猴子中的第k只摘到第乙個桃子需要花費a_k秒,此後每b_k秒就能摘到桃子;b類猴子中的第k只掰開第乙個桃子需要花費c_k秒,此後每d_k秒就能掰開乙個桃子。

不幸的是,b類猴子非常具有侵略性,兩種猴子不能同時待在場地內,因此,園長必須在a類猴子摘完所有桃子後立刻把它們帶走,然後立刻讓b類猴子進園;同樣當b類猴子把所有桃子全部掰開後也不能待在場地內太久,因為它們之間也會發生衝突,所有園長將在b類猴子掰開所有桃子後立刻送走它們。

園長帶走猴子和猴子進園的速度非常快,時間忽略不計。

alice非常喜歡看b類猴子掰桃子,告訴你表演的總時間,但不知道一共有多少個桃子,請你幫alice計算b類猴子進入動物園的時刻。

二分答案,判斷在二分時間內摘的桃子與掰開的桃子的大小關係,從而調整下一次二分。

#include

#include

#include

#define fo(i,j,k) for(int i=j;i<=k;i++)

#define fd(i,j,k) for(int i=j;i>=k;i--)

#define n 101

#define inf 1000000000

using

namespace

std;

int a[n][2];

int b[n][2];

int t,n,m;

bool check(int mid)

int main()

if(check(r)) cout

cout

<}

63猴子摘桃

程式設計訓練63猴子摘桃 問題描述 五隻猴子一起摘了一堆桃子,因為太累,五隻猴子決定先睡一覺再分。不久,其中乙隻猴子醒來了,它見別的猴子沒有醒來,便將一堆桃子平均分成 5 份,結果多了乙個,就將多的這個吃了,拿走其中的乙份並離開。又不久,第二隻猴 子醒來了,它不知道有乙個同伴已經拿走過桃子,便又將剩...

005猴子摘桃

猴子吃桃問題 猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了乙個。第二天早上又將第一天剩下的桃子吃掉一半,又多吃乙個。以後每天早上都吃了前一天剩下的一半零乙個。到第十天早上想再吃時,發現只剩下乙個桃子了。編寫程式求猴子第一天共摘了多少個桃子。include intmain void re...

(C語言)猴子摘桃

題目 乙個猴子摘了些桃子,第一天吃掉其中的一半然後多吃了1個,第二天照此方法又吃掉了剩下桃子的一半加1個,以後每天如此,直到第十天早上,猴子發現只剩下了1個桃子,請問猴子第一天總共摘了多少個桃子?輸出 a,b,c,d sum 分別表示 第九天早上沒有吃桃子之前桃子數,第八天早上沒有吃桃子之前桃子數,...