1278 相离的圆
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题

 收藏
 关注

平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的。
例如:4个圆分别位于1, 2, 3, 4的位置,半径分别为1, 1, 2, 1,那么{1, 2}, {1, 3} {2, 3} {2, 4} {3, 4}这5对都有交点,只有{1, 4}是相离的。
Input
第1行:一个数N,表示圆的数量(1 <= N <= 50000)
第2 - N + 1行:每行2个数P, R中间用空格分隔,P表示圆心的位置,R表示圆的半径(1 <= P, R <= 10^9)
Output
输出共有多少对相离的圆。
Input示例
4
1 1
2 1
3 2
4 1
Output示例
1

思路:

既然在X轴上,那么不用管他是不是圆,直接转化为线段就可以了。在线段的基础上变回类似于1133题的变形,重要的是二分查找,自己爆搜了次TLE了

#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
struct node
{int l,r;
}a[50005];
int cmp(node a,node b)
{return a.l<b.l;
}
int main()
{int n;cin>>n;int x,y;for(int i=1;i<=n;i++){cin>>x>>y;a[i].l=x-y;a[i].r=x+y;}sort(a+1,a+1+n,cmp);int sum=0;for(int i=1;i<n;i++){int tep=n-i;
/*        for(int j=i+1;j<=n;j++){if(a[i].r<a[j].l)break;tep--;}sum+=tep;*/int ans=n+1;int l=i+1,r=n;while(l<=r){int mid=(l+r)/2;if(a[i].r<a[mid].l){ans=mid;r=mid-1;}else{l=mid+1;}}sum+=n-ans+1;}cout<<sum<<endl;return 0;
}

51nod-1278 相离的圆相关推荐

  1. 51nod 1278 相离的圆 二分+排序

    1278 相离的圆 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个 ...

  2. 51nod 1278 相离的圆

    基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个圆分别位于1, 2, ...

  3. [51Nod](1278)相离的圆 ---- 二分查找

    平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个圆分别位于1, 2, 3, 4的位置,半径分别为1, 1, 2, 1,那么{1, 2}, {1, 3} ...

  4. 51Nod 1278 相离的圆 c/c++题解

    题目描述 平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个圆分别位于1, 2, 3, 4的位置,半径分别为1, 1, 2, 1,那么{1, 2}, {1 ...

  5. 51NOD 1278 相离的圆(二分 + 排序 好题)

    平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个圆分别位于1, 2, 3, 4的位置,半径分别为1, 1, 2, 1,那么{1, 2}, {1, 3} ...

  6. 51nod 1278 相离的圆 (排序)

    平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个圆分别位于1, 2, 3, 4的位置,半径分别为1, 1, 2, 1,那么{1, 2}, {1, 3} ...

  7. 51Nod 1278 相离的圆(好题)

    题目链接 平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个圆分别位于1, 2, 3, 4的位置,半径分别为1, 1, 2, 1,那么{1, 2}, {1 ...

  8. 【51nod】---1278 相离的圆(二分排序)

    题目链接:题目 1278 相离的圆 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多 ...

  9. 1278 相离的圆(任务调度,贪心)

    平面上有N个圆,他们的圆心都在X轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个圆分别位于1, 2, 3, 4的位置,半径分别为1, 1, 2, 1,那么{1, 2}, {1, 3} ...

最新文章

  1. 百面机器学习之经典算法
  2. Tensorflow 源码安装成功,导入报错 ImportError: cannot import name 'build_info'
  3. 杨振宁:宇宙有没有造物者?
  4. Exchange2010部署边缘服务器
  5. 系统安装05-Xenserver 7.0安装
  6. 配置jupyter notebook到conda env虚拟环境里可运行
  7. PHP cookie和session的分析
  8. 【数学分析笔记03】上确界和下确界
  9. GNSS NMEA-0183协议解析
  10. t470键盘拆解_张大妈 ThinkPad T470p 首篇 开箱拆机晒物
  11. 中国通信业:那些年,我们给用户挖的坑
  12. c51单片机流水灯程序汇编语言,单片机流水灯汇编程序,8路流水灯汇编语言程序的写法...
  13. AD18单位mm和mil切换
  14. ZIP:ZipEntry
  15. 3种团队分组适应项目_分组团队竞赛活动方案
  16. MySQL工作有多努力--了解MySQL Threads Running
  17. Android TextView显示表情、标签、超链接
  18. Gson的使用——Gson解析json数组并展示在ListView控件上
  19. 什么是青藤零域·微隔离安全平台?
  20. 第一次软工作业(数独)

热门文章

  1. mybatis plus 看这篇就够了,一发入魂
  2. MiKTeX安装及添加到环境变量
  3. 浮沙筑塔——protues仿真C51程序之LED灯闪烁
  4. 获得拼多多商品详情(商品主图、sku)
  5. 制导武器的分布式半实物仿真系统研究
  6. 学python编程能做什么项目_十个Python练手的实战项目,学会这些Python就基本没问题了...
  7. Homebrew替换阿里云镜像源
  8. LeetCode:838. 推多米诺————中等
  9. PostgreSQL中的ACID特性介绍
  10. C++将类写在头文件中