POJ 1328

简介: 1 2 //坐标精度是int 3 /* 4 圆心位于 5 */ 6 #include 7 #include 8 #include 9 #include 10 using namespace std; 11 12 const int N =...
 1  
 2 //坐标精度是int
 3 /*
 4 圆心位于 
 5 */
 6 #include <iostream>
 7 #include <cstdlib>
 8 #include <cstring>
 9 #include <cmath>
10 using namespace std; 
11 
12 const int N = 1005;
13 typedef struct Part 
14 {
15     int a, b;
16 };
17 Part q[N];
18 
19 typedef struct Node 
20 {
21     int left, right;
22 };
23 Node node[N];
24 
25 int cmp(const void *a, const void *b)//只能返回int
26 {
27     Part *c = (Part *)a;
28     Part *d = (Part *)b;
29     if(c->b == d->b)
30         return c->a < d->a;
31     return c->b > d->b;
32 }
33 
34 int main()
35 {
36     int i,j,k;
37     int n, d;//d为半径
38     int num = 1;
39     while(cin>>n>>d, n&&d)
40     {
41         /*
42         d<0时输出无解,却忘了发现d<0后,后面还有N行输入要“干”掉.
43         */
44         if(d<=0)
45         {
46             int a, b;
47             for(i=1; i<=n; i++)
48                 cin>>a>>b;
49             cout<<"Case "<<num++<<": "<<-1<<endl;
50             continue;
51         }
52         int cnt = 1;
53         bool flag;
54         for(i=1; i<=n; i++)
55         {
56             cin>>node[i].left>>node[i].right;
57             if(abs(node[i].right)>d)
58             {
59                 flag = true;
60             }
61         }
62         if(flag)
63         {
64             cout<<"Case "<<num++<<": "<<-1<<endl;
65             continue;
66         }
67         
68         for(i=1; i<=n; i++)
69         {//圆心在下面的区间内那么就可以包括那个点 
70             q[i].a = node[i].left - sqrt(1.0*(d*d - node[i].right*node[i].right));
71             q[i].b = node[i].left + sqrt(1.0*(d*d - node[i].right*node[i].right));        
72         }
73         
74         //下面是区间选点问题 
75         qsort(q+1, n, sizeof(Part), cmp);
76         int end = q[1].b;
77         for(i=2; i<=n; i++)
78         {
79             if(end<q[i].a)
80             {
81                 end = q[i].b;
82                 cnt++;
83             }
84         
85         }
86         cout<<"Case "<<num++<<": "<<cnt<<endl; 
87     }
88     return 0; 
89 }
90 
91 
92     
93         

 

目录
相关文章
基于宜搭的“企业报销流程”实践案例
报销是一个企业的典型场景,本案例着重讲述一个典型的财务报销流程的搭建,已介绍宜搭流程相关的核心功能。报销由员工发起申请,填写报销项以及对应的详情信息,发起审批流程。审批流程计划设置为:当前提交人主管,审批人所在部门对应的财务接口人,财务总监(如果金额大于10000元,则需要加入该角色)
基于宜搭的“企业报销流程”实践案例
|
ARouter 前端开发 Java
MVVM架构结合阿里ARouter,打造一套Android-Databinding组件化
前言 关于Android的组件化,相信大家并不陌生,网上谈论组件化的文章,多如过江之鲫,然而一篇基于MVVM模式的组件化方案却很少。
2139 2
|
11月前
|
人工智能 边缘计算 JSON
DistilQwen2 蒸馏小模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
本文详细介绍在 PAI 平台使用 DistilQwen2 蒸馏小模型的全链路最佳实践。
|
Ubuntu 应用服务中间件 nginx
如何在 Ubuntu 20.04 上安装和使用 Docker Compose
如何在 Ubuntu 20.04 上安装和使用 Docker Compose
1091 0
|
存储 SQL 关系型数据库
使用MyCat单库分表实战详解
本文目录 1. 场景 2. 实现 3. 配置真实服务器信息 4. 配置路由规则 5. 配置MyCat服务信息 6. 启动测试
1234 0
使用MyCat单库分表实战详解
干货!layerGroup在LeafLet中的实战
需求场景:boss想针对分子公司进行统一展示,有可能在地图上统一添加、移除、统一调整图标等操作。常规做法可以采用遍历法,去循环所有的marker,批量操作。此时,可以采用layerGroup的方式,将所有分子公司存放在一个layer中,通过分组,可以批量操作存放在layerGroup中
908 0
干货!layerGroup在LeafLet中的实战
|
Web App开发 前端开发 Android开发
前端页面双向滚动方案
脱离canvas后,页面如何实现上下左右双滑动?又如何在安卓系统和iOS系统上实现?
前端页面双向滚动方案
|
存储 缓存 安全
CDN加速OSS以及相关问题
本文主要介绍CDN加速OSS的原理、入门配置以及常见问题。
3439 1
CDN加速OSS以及相关问题
|
监控 物联网 消息中间件