题目链接:http://poj.org/problem?id=1328

解题报告:

1、按照头结点排序。

#include <cstdio>
#include <cmath>
#include <string.h>
#include <algorithm> using namespace std; struct point
{
double x;
double y;
} dis[],pos[]; bool cmp(const point a,const point b)
{
return a.x<b.x;
} int n;
double d; int main()
{
int Case=;
while(scanf("%d%lf",&n,&d),n!=||d!=)
{
memset(dis,,sizeof(dis));
bool flag=true; for(int i=; i<n; i++)
{
scanf("%lf%lf",&dis[i].x,&dis[i].y);
if(d<fabs(dis[i].y))
{
flag=false;
}
} for(int i=; i<n; i++)
{
pos[i].x=dis[i].x-sqrt(d*d*1.0-dis[i].y*dis[i].y);///计算一下左右区间
pos[i].y=dis[i].x*1.0+sqrt(d*d*1.0-dis[i].y*dis[i].y);
} if(flag)
{
sort(pos,pos+n,cmp); point tmp=pos[];
int ans=; for(int i=; i<n; i++)
{
if(pos[i].x>tmp.y)//没有重合的地方
{
ans++;
tmp=pos[i];
}
else if(pos[i].y<tmp.y)///有重合的地方且下一个岛屿的右覆盖较远
tmp=pos[i];
} printf("Case %d: %d\n",++Case,ans);
}
else printf("Case %d: %d\n",++Case,-);
}
return ;
}

2、按照尾节点排序。

#include <cstdio>
#include <cmath>
#include <string.h>
#include <algorithm> using namespace std; struct point
{
double x;
double y;
} dis[],pos[]; bool cmp(const point a,const point b)
{
return a.y<b.y;///按尾节点排序
} int n;
double d; int main()
{
int Case=;
while(scanf("%d%lf",&n,&d),n!=||d!=)
{
memset(dis,,sizeof(dis));
bool flag=true; for(int i=; i<n; i++)
{
scanf("%lf%lf",&dis[i].x,&dis[i].y);
if(d<fabs(dis[i].y))
{
flag=false;
}
} for(int i=; i<n; i++)
{
pos[i].x=dis[i].x-sqrt(d*d*1.0-dis[i].y*dis[i].y);
pos[i].y=dis[i].x*1.0+sqrt(d*d*1.0-dis[i].y*dis[i].y);
} if(flag)
{
sort(pos,pos+n,cmp); point tmp=pos[];
int ans=; for(int i=; i<n; i++)
{
if(pos[i].x>tmp.y)///没有重复
{
ans++;
tmp=pos[i];
}
else if(pos[i].x>tmp.y)
tmp=pos[i];
} printf("Case %d: %d\n",++Case,ans);
}
else printf("Case %d: %d\n",++Case,-);
}
return ;
}

最新文章

  1. 订货(bzoj 2424)
  2. Hadoop笔记系列 一 用Hadoop进行分布式数据处理(1)
  3. android开机自启动广播
  4. NHibernate实战详解(一)领域模型设计
  5. 2014年4月底至5月初51Aspx源码发布详情
  6. ADF_Database Develop系列2_设计数据库表之Table Partitions/Create Users/Generate DDL
  7. C语言结构体的对齐原则
  8. python 发送邮件例子
  9. android.view.InflateException: Binary XML file line #7: Error inflating class(OOM)
  10. C语言--基本运算符
  11. js常用DOM操作
  12. haproxy配置监控redis主备切换(转)
  13. oracle_面试题
  14. 老李推荐:第2章3节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之NoteEditor简介
  15. call,apply,bind 方法的学习
  16. Spring Cloud下基于OAUTH2认证授权的实现
  17. spring boot + vue + element-ui全栈开发入门——主页面开发
  18. 解决Android中图片圆角——.9图
  19. Knockout: 使用knockout validation插件进行校验, 给未通过校验的输入框添加红色边框突出显示.
  20. HTML项目总结

热门文章

  1. C语言一些易混淆的概念
  2. NETCORE openSUSE docker 安装
  3. 对四次挥手中的TIME_WAIT状态的学习
  4. Java 读写Properties配置文件【转】
  5. 使用PIE对IE6、7、8进行CSS3兼容介绍和经验总结
  6. C# 判断字符串为空(长度为0),或者是null(没有new)
  7. Unity Input.GetMouseButtonDown 拿到鼠标按键
  8. Intellij IDEA +genymotion安装配置
  9. Java之通过反射机制选择servlet中的对应的方法
  10. Python基本操作之文件操作