知識點學習
一:定義pair型別變數,存入vector陣列中,可以根據pair型別變數的第乙個位置的資料直接排序
二:關於lower_bound()函式和upper_bound()函式
學習部落格:
作用是利用二分查詢方法對乙個有序的陣列進行查詢
若陣列是從小到大排序,可利用下面兩種方法二分查詢:
lower_bound(begin,end,num) 陣列從begin到end中查詢乙個大於或等於num的值 ,並返回該值的位址,並通過返回的位址減去陣列的首位址即可找到對應值的下標; 若找不到則返回end
upper_bound(begin,end,num) 陣列從begin到end中查詢乙個大於num的值,並返回該值的位址,並通過返回的位址減去陣列的首位址即可找到對應值的下標; 若找不到則返回end
若陣列是從大到小排序,可對函式進行過載
lower_bound(begin,end,num,greater())
upper_bound(begin,end,num,greater()) 原理同上
三:make_pair()函式
生成乙個pair物件,用處很多,可以用於這道題中把兩個變數新增到vector陣列中, 也可以對函式為pair型別傳參時可以用到make_pair()
四:substr()函式
s.substr(begin,size)表示對s字串,從begin下標開始,長度為size大小的字串
時間限制: 1 sec 記憶體限制: 256 mb
提交: 236 解決: 63
[提交] [狀態] [命題人:admin]
題目描述
題目描述
輸入第一行兩個整數 n,m,表示詞庫的單詞個數和 bessie 的詢問次數。
接下來 n 行,每行乙個字串,表示 bessie 的常用單詞,輸入的第 i 個字串在詞庫中編號為 i。
接下來 m 行,每行乙個整數 k 和乙個字串 s,表示 bessie 的詢問,意義是詢問詞庫中以 s 為字首的字典序第 k 小的單詞在詞庫中的編號。
輸出對於每次詢問輸出乙個整數,表示以s為字首的字典序第 k 小的單詞在詞庫中的編號;如果不存在這樣的單詞,輸出 −1。
複製樣例資料
10 3
dabba
abdaa
aaaaa
aababc
acdadba
4 a2 da
4 da
樣例輸出
3
1-1
提示
(1) 以 a 為字首的單詞有 ,其中字典序第 4 小的是 ab,是詞庫的第 3 個單詞。
(2) 以 da 為字首的單詞有 ,其中字典序第 2 小的是 dab,是詞庫的第 1 個單詞;沒有第 4 小的單詞。
對於 20% 的資料,1≤ 詞庫的字母總量,詢問的字母總量 ≤103。
對於 100%的資料,1≤ 詞庫的字母總量,詢問的字母總量 ≤106,保證詞庫里的單詞兩兩不同,所有字串只包含小寫字母。
題意:給定n,表示詞庫中存在n個單詞,每次詢問乙個字串s和數字k,表示要找到乙個以以字串s 為字首的第k小的字串,並輸出該字串的最初下標
題解:用pair儲存字串和對應的編號,並存入vector陣列中
對vector陣列排序,注意pair的第乙個位置存字串,第二個位置存編號,因為排序的時候第乙個位置的優先順序高,可以直接根據字典序排序
使用者lower_bound函式進行二分查詢,返回對應位置的編號,判斷即可
**
#includetypedef long long ll;
const int mod=1000000007;
const int n=9;
using namespace std;
typedef pairpii;
typedef pairpll;
typedef pairpsi;
vectorvec;
ll n,m;
char str[5000007];
int main()
//for(int i=0;i=stmp.size())&&vec[slen+k-1].first.substr(0,stmp.size())==stmp)
printf("%d\n",vec[slen+k-1].second+1);
else
printf("-1\n");
}return 0;
}
二分查詢排序
static final int n 15 static void quicksort int arr,int left,int right 快速排序演算法 if ltemp rtemp ltemp if leftx high mid 1 else low mid 1 return 1 未找到 pu...
排序 二分查詢
實現歸併排序 快速排序 插入排序 氣泡排序 選擇排序 堆排序 選做 完成leetcode上的返回滑動視窗中的最大值 239 這是上一期第三天的任務進行保留 涉及佇列可以對第二天進行整理複習 程式設計實現 o n 時間複雜度內找到一組資料的第 k 大元素 def insert sort alist n...
二分查詢折半查詢排序
在乙個有序的陣列中,折半查詢乙個元素key,如果能找到返回陣列的下表,如果找不到,返回 1。實現如下所示 二分查詢法 author jcm 2016年8月6日 public class binaryserach int flag binarysearch a,19 if flag 1 system....