時間限制: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#include
#include
using namespace std;
int num[1000000+5];
int search(int r,int x)
return -1;
}int main()
return 0;
}
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...