P3613 深基15 例2 寄包櫃(map解法)

2021-10-10 01:37:53 字數 1356 閱讀 9348

題目描述

超市裡有 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標為不是 ...