時間限制: 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 個...