計蒜客 聯想專賣店大促銷 二分

2021-08-02 01:39:10 字數 591 閱讀 7712

題目鏈結

思路:

沒想到是二分,以為是記憶化搜尋,可是記憶化搜尋的話我們一般求的是有多少種排列的種數吧.

注意到每乙個禮包都有

,乙個u盤,乙個滑鼠。

剩餘的,分別為乙個機械鍵盤,乙個u盤,乙個滑鼠。

當禮包數目為x時,我們

至多可以提供a-x個普通,b-x個幸運,c個豪華。

怎麼樣保證相鄰的禮包不同?

考慮禮包數最多的那個設為w,那麼就需要w-1種其他的來插進去,所以就要保證最小x和次小的禮包個數y,滿足x+y+1>=w,也就是說x+y最多滿足x+y+1個最多的禮包不相鄰,所以我們check時候只需要比較最小值+次小值+min(最小值+次小值+1, 最大值)與x的大小關係即可。

#includeusing namespace std;

int t,a,b,c;

vectorvt;

bool check(int x)

int main()

else

r=mid-1;

} printf("%d\n",ans);

} return 0;

}

計蒜客 1562 二分查詢

蒜頭君手上有個長度為 nn 的陣列 aa。由於陣列實在太大了,所以蒜頭君也不知道陣列裡面有什麼數字,所以蒜頭君會經常詢問在陣列 aa 中,比 xx 大的最小值是多大?但是這次蒜頭君要求這個數字必須大於 xx,不能等於 xx。輸入格式 第一行輸入兩個整數 nn 和 mm,分別表示陣列的長度和查詢的次數...

計蒜客 尋找插入位置 (二分查詢)

給定乙個已經公升序排好序的陣列,以及乙個數 target,如果 target在陣列中,返回它在陣列中的位置。否則,返回 target插入陣列後它應該在的位置。假設陣列中沒有重複的數。以下是簡單的示例 1,3,5,6 5 2 1,3,5,6 2 1 1,3,5,6 7 4 1,3,5,6 0 0 輸入...

D 二分查詢(二) 計蒜客 T1561

題目描述 蒜頭君手上有個長度為 n 的陣列 a。由於陣列實在太大了,所以蒜頭君也不知道陣列裡面有什麼數字,所以蒜頭君會經常詢問在陣列 a 中,大於等於 x 的最小值是多大?輸入格式 第一行輸入兩個整數 n 和 m,分別表示陣列的長度和查詢的次數。接下來一行有 n 個整數 ai 接下來 m 行,每行有...