錄入 n 個學生的成績,並查詢。
★資料輸入
第一行輸入包括 n、 m(1<=n<=50,000,1<=m<=100,000)兩個數字。
接下來 n 行,每行包含名字和成績,名字用字串表示,長度不超過 4.成績為不
超過 100 的非負整數,名字僅由小寫字母組成。
接下來 m 行,每行包括乙個名字。
★資料輸出
輸出 m 行,如果查詢的學生不存在,輸出」not,exist!」,否則輸出學生的成績。
not,exist!
8580
not,exist!
★提示n 個名字各不相同
60%的資料
1<=n,m<=2,000
100%的資料
1<=n<=50,000,1<=m<=100,000
#include #include#include
#include
#include
#include
using
namespace
std;
struct
studentstu[
200007
];bool
cmp(student a,student b)
int lower_bound(int size, int
key)
else
len = half; //
在左邊子串行(包含middle)中查詢
}
return
first;
}int
main()
;
string
name;
scanf(
"%d %d
",&n,&m);
for(i=0;i)
stu[i].hash =hash;
stu[i].val =val;
} sort(stu,stu+n,cmp);
for(i=0;i)
int pos =lower_bound(n,hash);
if (pos == n || stu[pos].hash != hash) puts("
not,exist!");
else printf("
%d\n
", stu[pos].val);
} return0;
}
成績查詢(雜湊函式)
實驗任務 錄入 n 個學生的成績,並查詢。資料輸入 第一行輸入包括 n m 1 n 50,000,1 m 100,000 兩個數字。接下來 n 行,每行包含名字和成績,名字用字串表示,長度不超過 4.成績為不 超過 100 的非負整數,名字僅由小寫字母組成。接下來 m 行,每行包括乙個名字。資料輸出...
查詢 雜湊表查詢(雜湊表)
1 雜湊表查詢定義 雜湊技術是在記錄的儲存位置和它的關鍵字之間建立乙個確定的對應關係f,使得每個關鍵字key對應乙個儲存位置f key 查詢時,根據這個確定的對應關係找到給定值key的對映f key 若查詢集合中存在這個記錄,則必定在f key 的位置上。採用雜湊技術將記錄儲存在一塊連續的儲存空間中...
雜湊表(雜湊表)查詢
雜湊技術是在記錄的儲存位置和它的關鍵字之間建立起乙個確定的對應關係f,使每個關鍵字key對應乙個儲存位置f key f為雜湊函式,又稱雜湊函式。採用雜湊技術將記錄儲存在一塊連續的儲存空間中,這塊連續的儲存空間成為雜湊表 雜湊表。直接用key值的某個線性函式當位址。f key a key b 簡單,不...