1128 二分 二分查詢

2021-07-29 23:13:10 字數 888 閱讀 9768

時間限制:

10000ms

單點時限:

1000ms

記憶體限制:

256mb

描述nettle最近在玩《艦これ》,因此nettle收集了很多很多的船(這裡我們假設nettle氪了很多金,開了無數個船位)。去除掉重複的船之後,還剩下n(1≤n≤1,000,000)種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有值都不相同,稀有值越小的船越稀有,價值也就越高。

nettle現在通過大建又造出了一艘船,他想知道這艘船是不是重複的。如果是重複的,那麼這艘船在nettle所有的船裡面稀有值排多少位。

問題一nettle已經先把自己所有船按照稀有值從小到大排列好了(a[1..n]),我們要做的是看看新得到的船(假設稀有值為k)是否在這個序列中,且有對應的a[i]=k時,i為多少?

提示一:有序陣列的二分查詢

問題二因為nettle的船太多了,他不願意去給所有船按照稀有值排序,而是直接告訴了我們每一艘船的稀有值。在這種情況下我們該如何解決這個問題呢?

提示二:非有序陣列的二分查詢

輸入第1行:2個整數n,k。n表示陣列長度,k表示需要查詢的數;

第2行:n個整數,表示a[1..n],保證不會出現重複的數,1≤a[i]≤2,000,000,000。

輸出第1行:乙個整數t,表示k在陣列中是第t小的數,若k不在陣列中,輸出-1。

樣例輸入

10 5180

2970 663 5480 4192 4949 1 1387 4428 5180 2761

樣例輸出

9

本題思路:把t當成快速排序的樞軸元素,這樣在一趟快速排序後即能確定t的位置,即t是第幾小,很簡單吧.....

hiho 1128 二分 二分查詢

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...

Hihocoder 1128 二分 二分查詢

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...

hihoCoder 1128 二分 二分查詢

原題位址 一開始沒搞懂題目是想幹什麼,於是寫了乙個掃一遍的 a了,如下 1 include 2 3using namespace std 45 intmain 18 printf d n found lt 1 1 19 20return0 21 做到後面一題的時候才明白題目是什麼意思,如下 1 in...