set巧妙用於dfs

2022-05-01 18:00:07 字數 1179 閱讀 4501

題目:

垃圾小x經常在機房丟垃圾,比如奶茶杯子、用過的濕巾紙、吃完的零食包裝等。

可是訓練的桌子上放了電腦,實在放不下小x丟的垃圾了。因此,大家搬了一張專門丟垃圾的桌子放在小x邊上。為了防止小x丟垃圾的時候溢位,這張桌子很大,可以用乙個105×

105'>105×105105×105的網格來表示,桌子的左上角視為格點(1,1),右下角視為格點(105

,105)

'>(105,105)(105,105)。

有了這麼大的桌子,小x就可以肆意地丟垃圾:小x丟的垃圾既不會堆疊,也不會相鄰(若兩塊垃圾在上下左右及斜對角方向有接觸,則為相鄰)

看著這麼大的桌子被用來丟垃圾,你不禁發出了疑問:已知哪些格點被垃圾覆蓋,那麼小x一共丟了多少垃圾?

第一行乙個正整數n(1

≤n≤10

6)'>n(1≤n≤106)n(1≤n≤106),代表有幾個格點被垃圾覆蓋。

接下來n行,每行兩個正整數xi,

yi(1

≤xi,

yi≤10

5)'>xi,yi(1≤xi,yi≤105)xi,yi(1≤xi,yi≤105),代**點(xi

,yi)

'>(xi,yi)(xi,yi)被垃圾覆蓋。

輸出一行,乙個正整數,代表小x共丟了多少塊垃圾。
示例1

複製

15

1 12 2

1 23 4

4 34 4

6 66 4

6 53 7

2 15 6

3 34 6

4 7

複製

2

這裡直接dfs容易掛,巧妙用到set

**:#include

#include

using namespace std;

set>st;

int a[8]=;

int b[8]=;

void dfs(int x,int y)

int main()

set>::iterator it;

while(!st.empty())

cout樣例示意圖如下(為了方便觀察,格點之間留了空隙)

vim巧妙用法

1.塊複製 按ctrl v鍵,編輯框最下方將出現 可視 塊 字樣 使用方向鍵移動游標,選擇矩形區域內的文字 y 鍵複製文字 d 鍵剪下文字 p 鍵貼上文字 按shift v鍵,多行選擇 2.分屏 1 水平分屏 vim on file1 file2 o 水平 n 檔案數 切換 ctrl w w 水平分...

set集合容器的妙用(用於去重,排序)

set中自定義比較函式 使用insert 將元素插入到集合中去的時候,集合會根據設定的比較函式將該元素放到該放的節點上去。在定義集合的時候,如果沒有 指定比較函式,那麼採用預設的比較函式 按鍵值又小到大的順序插入元素 編寫比較函式的兩張方法 1.如果元素不是結構體,那麼可以編寫比較函式。includ...

Set方法的妙用

想到很多任務具都是通過get set方法進行乙個反射呼叫,然後實現轉換 那麼我們是否可以通過對get set方法的修改,對bean進行乙個資料的轉換呢?test public void test324 原生類 data allargsconstructor noargsconstructor pub...