資訊讀書會[1]
STL・Greedy・二分搜
by FHVirus
似乎校培都講過了qwq
反正我再講一次給沒聽過的嘛
很電的學弟就去刷題吧
STL 之一
Stack・Queue・Deque
FiLO
FiFO
DoublEnd
沒有 Lo-fi
#include<stack>
#include<queue>
#include<deque>
std::stack<int> stk;
std::queue<int> Q;
std::deque<int> dq;
stk.push(80000000);
int a = stk.top();
bool b = stk.empty();
stk.pop();
Q.push(7122);
int c = Q.front();
Q.pop();
dq.push_back(a);
dq.push_front(c);
int e = dq.front();
int f = dq.back();
dq.pop_front();
dq.pop_back();
可以幹嘛?
UVa 514 Rails
ZJ c123
給定一排牛(不是一牛排)每頭牛的高度,
牠們只能往右平視或俯視,
請問牠們分別能夠看到幾頭牛?
Queue 沒有裸題qwq
據說是 Deque 題,講師還沒寫過,
因為學長有放所以我也放 OW0)_b
單調隊列・單調棧?
給定一個長度為 \(n\) 的序列 \(a\),求:
- 給定一個正整數 \(k\),所有「連續 \(k\) 個數最大值」的最小值為何?
- 對每個數字 \(a_i\),符合 \(i < j, a_i < a_j\) 的最小 \(j\) 是多少?
STL 之二
Priority Queue・Set・Map
Priority Queue?
把最 () 的彈出來!
Set ?
就是集合而已
Map ?
一對一映射
學號 → 名字
Handle → Rating
講師 → 髮色
不支援倒著查喔!
注意!
有時不一定需要 Set 跟 Map !
可以用陣列就用陣列!
#include<queue>
std::priority_queue<int> pq;
pq.push(80000000);
pq.push(131);
pq.push(7122);
int a = pq.top(); // 80000000
pq.pop();
struct cmp{
bool operator()(int a, int b){
return a > b;
}
};
std::priority_queue<int, vector<int>, cmp> minpq;
minpq.push(80000000);
minpq.push(131);
minpq.push(7122);
int a = minpq.top(); // 131
minpq.pop();
Set・Map 自己查
複雜度?
Greedy!
「不拿白不拿」——某講師口癖
不切白不切
現在有 \(n\) 隻小蘿莉,
每隻蘿莉想要 \(a_i\) 份,
如果你將你一塊 \(x\) 單位的身體切成兩塊,
你會恰好感到 \(x\) 單位的痛苦度,
請問你至少會感到多少痛苦度呢?
$$n \leq 10^5, a_i \leq 10^4$$
每次取最小!
不取白不取!
怎麼取?
Priority Queue!
注意!
要先確定可不可以 Greedy!
二分搜
電神學弟上來講
剛好練一下 Interactive
作為一個建中生應該要會這題的最佳解吧OW0;)A
二分搜就是這麼簡單!
但是要好好處理開開閉閉!
把東西䖃再一起吧!
不䖃白不䖃
給定 \(N\) 會做嗎?
CF 最近爛爛的 qwq
要怎麼搜?二分好像不夠?
要怎麼搜?一定要搜嗎?
看到這裡代表
講師備課又備太少了
就去實作吧
Copy of 資訊讀書會[1]
By yennnn
Copy of 資訊讀書會[1]
- 314