平面上有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

思路: 由于圆心都在y轴上,所以我们可以把圆转化为线段,线段的前端点为pre,后端点post,然后按pre从小到大排序。利用二分找到第一个大于每一个线段pre的位置即可。

AC代码:

#include <bits/stdc++.h>
using namespace std;
int main()
{#ifdef LOCALfreopen("in.txt","r",stdin);#endif //LOCALios_base::sync_with_stdio(false);cin.tie(NULL),cout.tie(NULL);int n;cin>>n;int a,b;vector<int> pre,post;for(int i=0;i<n;i++){cin>>a>>b;pre.push_back(a-b);post.push_back(a+b);}sort(pre.begin(),pre.end());int ans = 0;for(int i=0;i<n;i++)ans+=pre.end()-upper_bound(pre.begin(),pre.end(),post[i]);cout<<ans<<endl;return 0;
}

[51Nod](1278)相离的圆 ---- 二分查找相关推荐

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

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

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

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

  3. 51nod 1278 相离的圆

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

  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 ...

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

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

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

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

  9. 51nod-1278 相离的圆

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

最新文章

  1. 禁止页面复制功能 js禁止复制 禁用页面右键菜单
  2. java获取24小时制时间格式_java 日期格式时间24小时制
  3. mysql workbench中删除数据表记录提示出错的问题
  4. Test live writer
  5. 莫比乌斯反演 做题记录
  6. 在SpringMVC中使用拦截器(interceptor)拦截CSRF***
  7. tornado-ioloop-async-io
  8. 【Golang】关于从切片中删除某个元素时会覆盖底层数组的说明
  9. JDK的KeyTool和KeyStore等加密相关
  10. IE8下window.open出现的bug
  11. creo图纸管理系统 creo企业图纸管理方案
  12. Linux系统中RPS/RFS介绍
  13. Microsoft SQL Server Reporting Services 初探
  14. 论文学习——洪水预报实时校正技术研究进展
  15. 往word表中写数据
  16. android apk可安装成功但无法运行提示dex文件异常
  17. ubuntu共享文件夹不显示及设备空间不足解决[随手笔记]
  18. P3793礼物和糖果
  19. 致互联网人:一篇文章让你了解互联网公司的职位架构以及职能要求
  20. Pixhawk RPi CM4 Baseboard 树莓派CM4安装Ubuntu20.04 server 配置ros mavros mavsdk

热门文章

  1. 越优秀越受排挤,牢记这“三句土话”,再艰难也要打好自卫反击
  2. 2011年五一江西萍乡武功山--绿郁葱葱的连绵高山草甸,漂亮
  3. [省选前题目整理][清橙A1303]tree(LCT)
  4. 蓝桥杯 ALGO-1003 礼物
  5. python 绘制正弦余弦函数 matplotlib的基本使用
  6. NLP与对比学习的巧妙融合,简单暴力效果显著!
  7. SD SDHC SDXC
  8. 自建服务器和购买云服务器的过程总结
  9. java和大行自行车哪个好_全面解析曝光大行折叠自行车d8和p8配置有什么区别?哪个好?优缺点内幕透露...
  10. LOL手游登上去服务器维护,lol手游进不去怎么回事?无法登陆解决方法