演算法 日更 第二十四期 二分查詢和二分答案的區別

2022-07-12 11:15:11 字數 1485 閱讀 1684

▎前置技能

二分(戳這裡了解)和分治(戳這裡了解)。

▎前言想必你已經學會了二分,但是你真的知道二分查詢和二分答案的區別嗎?

▎二分☞

『二分查詢定義』

說白了就是用來查詢乙個元素是否存在。

☞『二分答案定義』

這個在網上沒有乙個官方的定義,根據小編的理解就是在乙個問題不知道答案的情況下需要假設答案來帶入看看對不對,而二分正是假設答案的利器。

☞『二分查詢和二分答案的區別』

正如上所述,二分查詢側重於查詢乙個元素是否存在,而二分答案則側重於找到答案。

▎二分答案例題

二分查詢想必你已經很熟練了,那麼二分答案你真的熟嗎?廢話不多說,直接上題:

時間限制: 1000 ms         記憶體限制: 65536 kb

提交數: 2261     通過數: 1005 

每年奶牛們都要舉辦各種特殊版本的跳房子比賽,包括在河裡從乙個岩石跳到另乙個岩石。這項激動人心的活動在一條長長的筆直河道中進行,在起點和離起點l遠 (1 ≤ l≤ 1,000,000,000) 的終點處均有乙個岩石。在起點和終點之間,有n (0 ≤ n ≤ 50,000) 個岩石,每個岩石與起點的距離分別為di (0 < di < l)。

在比賽過程中,奶牛輪流從起點出發,嘗試到達終點,每一步只能從乙個岩石跳到另乙個岩石。當然,實力不濟的奶牛是沒有辦法完成目標的。

農夫約翰為他的奶牛們感到自豪並且年年都**了這項比賽。但隨著時間的推移,看著其他農夫的膽小奶牛們在相距很近的岩石之間緩慢前行,他感到非常厭煩。他計畫移走一些岩石,使得從起點到終點的過程中,最短的跳躍距離最長。他可以移走除起點和終點外的至多m (0 ≤ m ≤ n) 個岩石。

請幫助約翰確定移走這些岩石後,最長可能的最短跳躍距離是多少?

第一行包含三個整數l, n, m,相鄰兩個整數之間用單個空格隔開。

接下來n行,每行乙個整數,表示每個岩石與起點的距離。岩石按與起點距離從近到遠給出,且不會有兩個岩石出現在同乙個位置。

乙個整數,最長可能的最短跳躍距離。

25 5 2211

1417

21

4

在移除位於2和14的兩個岩石之後,最短跳躍距離為4(從17到21或從21到25)。

no這道題如果事先沒有學習過分治,那麼就很難下手,因為這道題的答案不好正面求。

那麼我們不妨使用側面求解,也就是暴力列舉答案,套進去看看對不對。

但是這樣太慢了,我們可以採取二分的方法優化。

這就是二分答案,**如下:

1 #include2

using

namespace

std;

3int l,n,m,a[60000

],l,r,x;

4int love(int

mid)512

return

cnt;13}

14int

main()

1528 cout<29 }

打卡第二十四天 恢復二叉搜尋樹

方法一 對陣列進行排序 演算法 按中序遍歷樹,遍歷之後的陣列應該是幾乎排序的列表,其中只有兩個元素被交換 再次遍歷樹,將值x的節點改為y,將值y的節點改為x definition for a binary tree node.public class treenode class solution ...

4 8日 遞迴和二分查詢

在函式中呼叫函式本身自己。執行一次開闢乙個空間,python對你的記憶體有乙個保護機制,預設只能遞迴到998層。def func n n 1 print n func n func 0 view code 二分查詢前提是有序且唯一的數字列表。li 1,21,30,32,44,55,56,433,de...

演算法 日更 第四十四期 虛二叉樹

前言 小編菜歸菜,但是好歹也寫過幾篇關於樹的部落格 線段樹 劃分樹 紅黑樹 如果你已經會了這些樹,那麼你一定會認為樹很麻煩,很燒腦。其中的紅黑樹是一種二叉排序樹實現自平衡的樹,但是最煩人,線段樹和劃分樹都很好寫,而紅黑樹不僅要建樹 查詢,還要再實現自平衡。但是虛二叉樹和紅黑樹功能一樣,只不過更大的優...