平面上有n個圓,他們的圓心都在x軸上,給出所有圓的圓心和半徑,求有多少對圓是相離的。
例如:4個圓分別位於1, 2, 3, 4的位置,半徑分別為1, 1, 2, 1,那麼, 這5對都有交點,只有是相離的。
input
第1行:乙個數n,表示圓的數量(1 <= n <= 50000)output第2 - n + 1行:每行2個數p, r中間用空格分隔,p表示圓心的位置,r表示圓的半徑(1 <= p, r <= 10^9)
輸出共有多少對相離的圓。input示例
4output示例1 12 1
3 24 1
1儲存乙個圓的左右端點,二分搜尋減去相切的就可以了。
#include #include#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#pragma comment(linker, "/stck:1024000000,1024000000")
#define lowbit(x) (x&(-x))
#define max(x,y) (x>=y?x:y)
#define min(x,y) (x<=y?x:y)
#define max 100000000000000000
#define mod 1000000007
#define pi acos(-1.0)
#define ei exp(1)
#define pi 3.1415926535897932384626433832
#define ios() ios::sync_with_stdio(true)
#define inf 0x3f3f3f3f
#define mem(a) ((a,0,sizeof(a)))typedef
long
long
ll;ll n,l[
50006],r[500006
],x,y;
mapint>m;
intmain()
sort(r,r+n);
sort(l,l+n);
ll ans=0
;
for(int i=0;i)
printf(
"%lld\n
",ans);
return0;
}
51nod 1278 相離的圓
題目 平面上有n個圓,他們的圓心都在x軸上,給出所有圓的圓心和半徑,求有多少對圓是相離的。例如 4個圓分別位於1,2,3,4的位置,半徑分別為1,1,2,1,那麼,這5對都有交點,只有是相離的。input 第1行 乙個數n,表示圓的數量 1 n 50000 第2 n 1行 每行2個數p,r中間用空格...
51 NOD 1278 相離的圓
1278 相離的圓 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 平面上有n個圓,他們的圓心都在x軸上,給出所有圓的圓心和半徑,求有多少對圓是相離的。例如 4個圓分別位於1,2,3,4的位置,半徑分別為1,1,2,1,那麼,這5對都有交點,只有是相離的。inpu...
51Nod1278 相離的圓
平面上有n個圓,他們的圓心都在x軸上,給出所有圓的圓心和半徑,求有多少對圓是相離的。例如 4個圓分別位於1,2,3,4的位置,半徑分別為1,1,2,1,那麼,這5對都有交點,只有是相離的。注意圓心在座標軸上,之前因為沒看到這句話把題跳了。然後就可以轉化為線段,按照左端點排序,i代表線段迴圈,二分求左...