藍橋杯 分巧克力 及二分法模板例題介紹

2021-10-03 19:45:28 字數 2130 閱讀 2924

先介紹二分法的模板例題:洛谷p1577

有n條繩子,它們的長度分別為li。如果從它們中切割出k條長度相同的

繩子,這k條繩子每條最長能有多長?答案保留到小數點後2位(直接捨掉2為後的小數)。

輸入格式

第一行兩個整數n和k,接下來n行,描述了每條繩子的長度li。

輸出格式

切割後每條繩子的最大長度。

4

118.02

7.43

4.57

5.39

2.00
二分法介紹:通過不斷選擇左右邊界來獲取最大值,通過指定迴圈次數可以有效避免浮點小數精度問題導致的死迴圈。100次迴圈可以將精度達到10-30。

**:

#include

#include

intconst inf =

100000000

;int n,k;

double a[

10010];

bool

judge

(double mid)

return sum >= k;

}int

main

(void

)double lb =

0,rb = inf,mid;

for(

int i =

0;i <

100;i++

)printf

("%.2f"

,floor

(mid*

100)

/100.0);

return0;

}

兒童節那天有k位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。

小明一共有n塊巧克力,其中第i塊是hi x wi的方格組成的長方形。

為了公平起見,小明需要從這 n 塊巧克力中切出k塊巧克力分給小朋友們。切出的巧克力需要滿足:

1. 形狀是正方形,邊長是整數

2. 大小相同

例如一塊6x5的巧克力可以切出6塊2x2的巧克力或者2塊3x3的巧克力。

當然小朋友們都希望得到的巧克力盡可能大,你能幫小hi計算出最大的邊長是多少麼?

輸入格式

第一行包含兩個整數n和k。(1 <= n, k <= 100000)

以下n行每行包含兩個整數hi和wi。(1 <= hi, wi <= 100000)

輸入保證每位小朋友至少能獲得一塊1x1的巧克力。

輸出格式

輸出切出的正方形巧克力最大可能的邊長。

2106

556

2
資料規模和約定

峰值記憶體消耗(含虛擬機器) < 256m

cpu消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。

注意:main函式需要返回0;

只使用ansi c/ansi c++ 標準;

不要呼叫依賴於編譯環境或作業系統的特殊函式。

所有依賴的函式必須明確地在原始檔中 #include

不能通過工程設定而省略常用標頭檔案。

提交程式時,注意選擇所期望的語言型別和編譯器型別。

解題思路:本題是對二分法的使用,逼近最大值,要注意的是本題巧克力邊長的選擇只能是整數。

**:

#include

#include

int a[

100010][

2];int n,k;

const

int inf =

100000000

;bool

judge

(double mid)

return sum >= k;

}int

main

(void

)double lb =

0,rb = inf;

double mid;

for(

int i =

0;i <

100;i++

)printf

("%d"

,int

(mid));

return0;

}

藍橋杯 分巧克力 二分法

問題描述 兒童節那天有k位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。小明一共有n塊巧克力,其中第i塊是hi x wi的方格組成的長方形。為了公平起見,小明需要從這 n 塊巧克力中切出k塊巧克力分給小朋友們。切出的巧克力需要滿足 1.形狀是正方形,邊長是整數 2.大小相同 例如一塊6x5...

分巧克力 二分法

兒童節那天有k位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。小明一共有n塊巧克力,其中第i塊是hi x wi的方格組成的長方形。為了公平起見,小明需要從這 n 塊巧克力中切出k塊巧克力分給小朋友們。切出的巧克力需要滿足 1.形狀是正方形,邊長是整數 2.大小相同 例如一塊6x5的巧克力可...

二分法模板

二分法基本思想 在乙個有序序列中快速查詢乙個值的位置,可以先查詢中間值,比較大小,分析該值在上半段還是下半段,然後在下乙個區間再次二分查詢,時間複雜度為 logn 二分法的應用不僅僅如此,在其他很多方面都有應用,比如acm中從 0 到 正無窮 二分答案等等。由於二分法基本思想比較簡單這裡不做過多描述...