題目描述
超市裡有 n(n≤10^5) 個寄包櫃。每個寄包櫃格仔數量不一,第 i 個寄包櫃有 ai
(ai ≤10 ^5) 個格仔,不過我們並不知道各個 ai的值。對於每個寄包櫃,格仔編號從 1 開始,一直到 ai 。現在有 q(q≤10 ^5) 次操作:
1 i j k:在第 ii個櫃子的第 j 個格仔存入物品 k(0≤k≤10 ^9)。當 k=0 時說明清空該格仔。
2 i j:查詢第 i個櫃子的第 j個格仔中的物品是什麼,保證查詢的櫃子有存過東西。
已知超市裡共計不會超過 10^7個寄包格仔,ai是確定然而未知的,但是保證一定不小於該櫃子存物品請求的格仔編號的最大值。當然也有可能某些寄包櫃中乙個格仔都沒有。
輸入格式
第一行 2 個整數 n 和 q,寄包櫃個數和詢問次數。
接下來 q 個整數,表示一次操作。
輸出格式
對於查詢操作時,輸出答案。
輸入輸出樣例
輸入
5 4輸出1 3 10000 114514
1 1 1 1
2 3 10000
2 1 1
114514思路:1
首先我們肯定直接陣列暴力,會超時。可以用stl中的map來進行資料離散化,時間複雜度log(n)。直接使用map[i][j]來表示第 i 個櫃子的第 j 個物品存放的東西(0表示無東西存放)。
map<
int,
int> a[
100005];
//建立二維對映
或者
map<
int,map<
int,
int>
> a;
//建立二維對映
上**
#include
using
namespace std;
map<
int,
int> a[
100005];
//建立二維對映
intmain()
else cout << a[i]
[j]<< endl;
// 查詢
}return0;
}
洛谷 P3613 深基15 例2 寄包櫃
超市裡有 n n le10 5 個寄包櫃。每個寄包櫃格仔數量不一,第 iii 個寄包櫃有 a i a i le10 5 個格仔,不過我們並不知道各個 a i 的值。對於每個寄包櫃,格仔編號從 1 開始,一直到 a i 現在有 q q le10 5 次操作 已知超市裡共計不會超過 10 7 個寄包格仔...
P3613 深基15 例2 寄包櫃(兩種方法
題目描述 題目鏈結 超市裡有 n 10 5 個寄包櫃。每個寄包櫃格仔數量不一,第 i 個寄包櫃有 ai 10 5 個格仔,不過我們並不知道各個 ai的值。對於每個寄包櫃,格仔編號從 1 開始,一直到 ai。現在有 q 10 5 次操作 1 i j k 在第 i 個櫃子的第 j個格仔存入物品0 k 1...
P5736 深基7 例2 質數篩
include using namespace std long long shai long long a for int i 2 i sqrt a i return 1 跑遍了迴圈沒找到除1和本身之外的數,那就是素數,返回1。int main for int i 1 i n i 0,1標為不是 ...