http://blog.csdn.net/firenet1/article/details/47041145

#include <iostream>
#include <algorithm>
#include <string.h>
#include <cmath>
#include <cstdio>
#include <set>
using namespace std;
const int maxn=;
struct Circle
{
int id,x,y,r;
Circle(int cid=,int cx=,int cy=,int cr=)
{
id=cid; x=cx; y=cy; r=cr;
}
}cir[maxn],P[maxn]; bool cmp(Circle a, Circle b)
{
return a.x<b.x;
}
int globalx;
struct point{
int id,ty;
point(int cid=, int cty=){
id=cid;
ty=cty;
}
};
double yposition(int id, int ty)
{
double x=globalx-cir[id].x;
double y=sqrt(1.0*cir[id].r*cir[id].r-x*x);
if(ty==)return cir[id].y+y;
return cir[id].y-y;
}
bool operator <(point a, point b)
{
if(a.id==b.id)return a.ty>b.ty;
return yposition(a.id,a.ty)>yposition(b.id,b.ty);
}
bool operator == (point a, point b)
{
return a.id==b.id&&a.ty==b.ty;
} set<point>Q;
int dep[maxn];
int main()
{
int n;
while(scanf("%d",&n)==)
{
Q.clear();
int cnt=;
for(int i=; i<n; i++)
{
scanf("%d%d%d",&cir[i].x,&cir[i].y, &cir[i].r);
cir[i].id=i;
P[cnt++]=Circle(i,cir[i].x-cir[i].r,);
P[cnt++]=Circle(i,cir[i].x+cir[i].r,);
}
sort(P,P+cnt,cmp);
memset(dep,,sizeof(dep));
set<point>:: iterator it1,it2;
int ans=;
for(int i=; i<cnt; i++)
{
globalx=P[i].x;
if(P[i].y==)
{
Q.erase(point(P[i].id,));
Q.erase(point(P[i].id,));
}else
{
it1=Q.insert(point(P[i].id,)).first;
it2=it1;
it1++;
if(it1==Q.end()||it2==Q.begin()){
dep[ P[i].id] =;
}else
{
it2--;
if(it1->id==it2->id){
dep[P[i].id]=dep[it1->id]+;
}else
{
dep[P[i].id]=max(dep[it1->id],dep[it2->id]);
}
} Q.insert(point(P[i].id,)); }
ans=max(dep[P[i].id],ans);
}
printf("%d\n",ans);
}
return ;
}

hdu3511 圆的扫描线的更多相关文章

  1. hdu3511 Prison Break 圆的扫描线

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=3511 题目: Prison Break Time Limit: 10000/5000 MS ( ...

  2. HDU5299 圆的扫描线 && 树上删边博弈

    HDU5299 圆的扫描线 && 树上删边博弈 标签(空格分隔): 未分类 给出若干个圆,可以互相嵌套但不相交或相切. 每次删去一个圆和它内部的圆,进行博弈,问谁赢. 分成两部分.首先 ...

  3. bzoj4561: [JLoi2016]圆的异或并 圆的扫描线

    地址:http://www.lydsy.com/JudgeOnline/problem.php?id=4561 题目: 4561: [JLoi2016]圆的异或并 Time Limit: 30 Sec ...

  4. POJ - 1981 :Circle and Points (圆的扫描线) hihocoder1508

    题意:给定N个点,然后给定一个半径为R的圆,问这个圆最多覆盖多少个点. 思路:在圆弧上求扫描线. 如果N比较小,不难想到N^3的算法. 一般这种覆盖问题你可以假设有两个点在圆的边界上,那么每次产生的圆 ...

  5. 【LOJ2586】【APIO2018】选圆圈 CDQ分治 扫描线 平衡树

    题目描述 在平面上,有 \(n\) 个圆,记为 \(c_1,c_2,\ldots,c_n\) .我们尝试对这些圆运行这个算法: 找到这些圆中半径最大的.如果有多个半径最大的圆,选择编号最小的.记为 \ ...

  6. 计算几何值平面扫面poj2932 Coneology

    Coneology Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4097   Accepted: 859 Descript ...

  7. Coneology(POJ 2932)

    原题如下: Coneology Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4937   Accepted: 1086 D ...

  8. 【APIO2018】选圆圈(平面分块 | CDQ分治 | KDT)

    Description 给定平面上的 \(n\) 个圆,用三个参数 \((x, y, R)\) 表示圆心坐标和半径. 每次选取最大的一个尚未被删除的圆删除,并同时删除所有与其相切或相交的圆. 最后输出 ...

  9. 洛谷P3268 [JLOI2016]圆的异或并(扫描线)

    扫描线还不是很熟啊--不管是从想的方面还是代码实现的方面-- 关于这题,考虑一条平行于\(y\)轴的扫描线从左到右扫描每一个圆,因为只有相离和内含两种关系,只用在切线处扫描即可 我们设上半圆为1,下半 ...

随机推荐

  1. EF-CodeFirst-基础

    什么是Code-First Code-First主要用于领域驱动设计.在Code-First方法中,专注于应用程序的域,先开始为域实体创建类,而不是先设计数据库,然后创建与数据库设计相匹配的类.下图说 ...

  2. webpack打包配置模板

    /** * Created by zzq on 2017/3/26. *///__dirname是node.js中的一个全局变量,它指向当前执行脚本所在的目录module.exports = {//注 ...

  3. 动态补丁构建工具nuwa中的“坑”

    1. 继承android中的Application的类A1Application:并且A2Application继承自A1Application,并且配置在清单文件中name=".A2App ...

  4. 我想要得那块牌—记烟台大学第一届"ACM讲堂"

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/sr19930829/article/details/26812621           2014年 ...

  5. what's the python之if判断、while循环以及for循环

    Python缩进原则 顶级代码必须顶行写,即如果一行代码本身不依赖于任何条件,那它必须不能进行任何缩进 同一级别的代码,缩进必须一致 官方建议缩进用4个空格 Python程序语言指定任何非0和非空的布 ...

  6. discuz论坛 模板修改

    门户首页 template/rtj1009_007/portal/index.php 头部二级导航 template/rtj1009_007/common/toubu.php 底部内容文件 templ ...

  7. 自定义安装visual studio 2010开发asp.net

    VS2010的安装对于VS的安装大家肯定都熟悉,不过我在很多地方看到的是大家讲VS的全部组件都安装了,不但浪费磁盘空间,还降低了系统性能,除此之外,还有人安装了VS之后不知道顺手把MSDN安装上,害得 ...

  8. echarts给数据视图添加表格样式

    1,准备好样式 <style>.myTable {margin: 0 auto;/* height: 300px; */width: 700px;} .myTitle {backgroun ...

  9. Number (int float bool complex)--》int 整型、二进制整型、八进制整型、十六进制整型

    # ### Number (int float bool complex) # (1) int 整型 (正整数 0 负整数) intvar = 15 print(intvar) intvar = 0 ...

  10. content_type

    1.作用 将app名称与其中表关系进行保存 在models创建表时,关联到ContentType并不会产生实际的字段 2.使用 在models中代码 from django.db import mod ...