基准时间限制: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

思路:将圆的左右点的坐标放入数组,按照从大到小排序,如果一样大则先排左顶点。再设num=圆的个数n,遍历一遍,遇到左顶点num--;遇到右顶点ans+=num。代码:
#include<iostream>
#include<algorithm>
using  namespace std;
struct node{int sum,flag;
}a[100005];
bool cmp(node a1,node a2)
{if(a1.sum!=a2.sum)return a1.sum<a2.sum;elsereturn a1.flag<a2.flag;
}
int main()
{int n,o,r;cin>>n;for(int i=0;i<n;i++){cin>>o>>r;a[2*i].sum=o-r;a[2*i].flag=1;//左顶点 a[2*i+1].sum=o+r;a[2*i+1].flag=2;//右顶点
    }sort(a,a+2*n,cmp);int num=n,sum=0;for(int i=0;i<2*n;i++){if(a[i].flag==1)num--;else if(a[i].flag==2)sum+=num;}cout<<sum<<endl;return 0;
}

转载于:https://www.cnblogs.com/xiongtao/p/9340360.html

51nod1278 相离的圆相关推荐

  1. 51nod-1278 相离的圆

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

  2. 相离的圆(51Nod-1278)

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

  3. 51nod 1278 相离的圆

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

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

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

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

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

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

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

  7. 51Nod_1278 相离的圆【贪心+二分】

                                             51Nod_1278 相离的圆 http://www.51nod.com/Challenge/Problem.html ...

  8. 51NOD 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轴上,给出所有圆的圆心和半径,求有多少对圆是相离的. 例如:4个 ...

最新文章

  1. gin context和官方context_gin 源码阅读(二) 路由和路由组
  2. 利用Minhash和LSH寻找相似的集合
  3. 深入理解HTTP协议、HTTP协议原理分析
  4. linux查看所有磁盘信息fdisk,Linux下添加新硬盘,分区及挂载 挂载好新硬盘后输入fdisk -l命令看当前磁盘信息 可以看...
  5. vijos 1067 Warcraft III 守望者的烦恼 矩阵
  6. ZZUOJ 10508: 数列游戏IV
  7. 谷歌guava_Google Guava:您永远不会知道的5件事
  8. 工业交换机:如果出现了物理性故障该怎么判断?
  9. (转)Bootstrap 之 Metronic 模板的学习之路 - (3)源码分析之 body 部分
  10. 感应联动不是梦,穿透屏幕“闻”见花香你敢信?
  11. avalon 笔记---Mr.wing
  12. Webbench学习笔记二:getopt_long函数和build_request函数
  13. vue导出excel表格(详细教程)
  14. 【 PID 算法 】PID 算法基础
  15. 笔记本无线上网怎么通过网线共享给台式机 设置方法
  16. 【概率入门(一)】排列组合?我们再来捋一捋
  17. 编写MapReduce程序计算平均分
  18. 华为RIP动态路由实例
  19. Xilinx MicroBlaze软核驱动DDR4
  20. Unity3D如何快速入门

热门文章

  1. Xcode直接安装ipa
  2. 关于Ubuntu18.04双系统安装后无法连接WiFi问题解决方法
  3. Windows7自带截图工具没法保存
  4. 转载——MinMax算法详解
  5. 怎么给图片换背景?点开收货一些新方法
  6. 学习编程应该最基本的是学习什么
  7. 一个屌丝程序员的青春(三七九)
  8. Mars3D\Cesium
  9. gridView---->列标题右键菜单管理
  10. 2017年问题汇总-待整理