P3613 深基15 例2 寄包櫃(兩種方法

2021-10-07 21:38:53 字數 1423 閱讀 7560

題目描述

題目鏈結

超市裡有 n≤10^5 個寄包櫃。每個寄包櫃格仔數量不一,第 i 個寄包櫃有 ai≤10^5 個格仔,不過我們並不知道各個 ai的值。對於每個寄包櫃,格仔編號從 1 開始,一直到 ai。現在有 q≤10^5 次操作:

1 i j k:在第 i 個櫃子的第 j個格仔存入物品0≤k≤10^9。當 k=0時說明清空該格仔。

2 i j:查詢第 i 個櫃子的第 j 個格仔中的物品是什麼,保證查詢的櫃子有存過東西。

已知超市裡共計不會超過 10^7個寄包格仔,ai 是確定然而未知的,但是保證一定不小於該櫃子存物品請求的格仔編號的最大值。當然也有可能某些寄包櫃中乙個格仔都沒有。

輸入格式

第一行 2 個整數 n 和 q,寄包櫃個數和詢問次數。

接下來 q 個整數,表示一次操作。

輸出格式

對於查詢操作時,輸出答案。

輸入輸出樣例

輸入 #1

5 41 3 10000 114514

1 1 1 1

2 3 10000

2 1 1

輸出 #1

1145141題解

這題如果開二維陣列的話k[100005][100005]肯定執行錯誤了。那麼如果用一維陣列的話k[10000005]查詢操作又會超時。

那麼就放棄吧

我們想到可以用動態儲存,vector來存。

寫乙個結構體《櫃子》,包含格仔,數,格仔的個數。

typedef

struct

ss;

櫃子開10的5次方大。

ss c[

100300

];

下面為完整**:

#include

#include

#include

#include

#include

using

namespace std;

typedef

struct

ss;ss c[

100300];

intmain()

else}}

}}

另一種方法:

用map二維對映。

#include

#include

#include

#include

#include

#include

using

namespace std;

map<

int,map<

int,

int>

> p;

intmain()

else

}}

ac

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

題目描述 超市裡有 n n 10 5 個寄包櫃。每個寄包櫃格仔數量不一,第 i 個寄包櫃有 ai ai 10 5 個格仔,不過我們並不知道各個 ai的值。對於每個寄包櫃,格仔編號從 1 開始,一直到 ai 現在有 q q 10 5 次操作 1 i j k 在第 ii個櫃子的第 j 個格仔存入物品 k...

洛谷 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 個寄包格仔...

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標為不是 ...