小奇畫畫 對於容器的使用

2021-09-02 23:17:15 字數 1140 閱讀 3185

時間限制: 1 sec  記憶體限制: 128 mb

題目描述

紅蓮清淚兩行欲吐半點卻無

如初是你杳然若緋霧還在水榭畔畫樓處

是誰衣白衫如初誰紅裳如故

——《憶紅蓮》

小奇想畫幾朵紅蓮,可惜它剛開始學畫畫,只能從畫圓開始。小奇畫了n個圓,它們的圓心都在x軸上,且兩兩不相交(可以相切)。現在小奇想知道,它畫的圓把畫紙分割成了多少塊?(假設畫紙無限大)

輸入第一行包括1個整數n。

接下來n行,每行兩個整數x,r,表示小奇畫了圓心在(x,0),半徑為r的乙個圓。

輸出輸出乙個整數表示答案。

複製樣例資料

4 

7 5

-9 11 11 9

0 20

樣例輸出

6
提示

對於 100%資料,1<=n<=300000,-10^9<=x<=10^9,1<=r<=10^9。

先將所有圓的區間和區間的距離算出來,根據左區間小,右區間大來排。然後遍歷一遍,因為沒有圓相交,所以後乙個圓要麼在前乙個圓外面,要麼就在前乙個圓裡面,如果在裡面,記錄下大圓被小圓站了多少距離,如果大圓被小圓占領的距離正好等於大圓的直徑,那麼就被分成兩份。

ps:有n個圓肯定至少把平面分為n+1部分。

/**/

#include #include #include #include #include #include #include #include #include #include #include #include typedef long long ll;

using namespace std;

int n, f[300005];

struct node

}a[300005];

stackst;

int main()

sort(a + 1, a + 1 + n);

st.push(1);

for (int i = 2; i <= n; i++)

int ans = n + 1;

for (int i = 1; i <= n; i++)

printf("%d\n", ans);

return 0;

}/**/

小奇畫畫 (bfs)

題目描述 紅蓮清淚兩行欲吐半點卻無 如初是你杳然若緋霧還在水榭畔畫樓處 是誰衣白衫如初誰紅裳如故 憶紅蓮 小奇想畫幾朵紅蓮,可惜它剛開始學畫畫,只能從畫圓開始。小奇畫了n個圓,它們的圓心都在x軸上,且兩兩不相交 可以相切 現在小奇想知道,它畫的圓把畫紙分割成了多少塊?假設畫紙無限大 輸入第一行包括1...

5725 小奇畫畫

題目鏈結 當某個圓被多個連續相切的小圓分成上下兩部分時塊數 2,其他情況塊數 1。上面的情況時最外面的圓被分成上下兩部分所以 2,其他小圓每個 1,初始為1 所以只需要判斷有多少個 2的,最後再 圓的個數 1 建圖把每個大圓裡直接包含的小圓建一條邊,然後判斷每個大圓直接相連的所有小圓的r的和是否等於...

小奇畫畫 BFS

紅蓮清淚兩行欲吐半點卻無 如初是你杳然若緋霧還在水榭畔畫樓處 是誰衣白衫如初誰紅裳如故 憶紅蓮 小奇想畫幾朵紅蓮,可惜它剛開始學畫畫,只能從畫圓開始。小奇畫了 n 個圓,它們的圓心都在 x 軸上,且兩兩不相交 可以相切 現在小奇想知道,它畫的圓把畫紙分割成了多少塊?假設畫紙無限大 第一行包括 1 個...