POJ 1328
2015-07-11 13:25
190 查看
//花了一上午时间做这道题,还是没想出来咋做。。。,看了别人的博客后,才知道,原来是这样做的。先以每个岛为圆心划圆,记录其与X轴的交点,分别记为去去q[i].x,q[i].y,让后在以左交点排序。让后在扫描一遍,接下来就是纯数学了//
#include<stdio.h>
#include<math.h>
struct node
{
double a;
double b;
} q[10000];
int main()
{
int n,d;
int k=1;
int sum;
while(scanf("%d%d",&n,&d)!=EOF&&(n||d))
{
int i,j;
int x,y;
int flag=0;
sum=1;
for(i=0; i<n; i++)
{
scanf("%d%d",&x,&y);
if(y>d)
flag=1;
q[i].a=x-sqrt((double)(d*d-y*y));
q[i].b=x+sqrt((double)(d*d-y*y));
}
if(flag)
{
printf("Case %d: %d\n",k++,-1);
continue;
}
double tmp,temp;
for(i=0; i<n; i++)
{
for(j=0; j<n-i-1; j++)
{
if(q[j].a>q[j+1].a)
{
tmp=q[j].a;
q[j].a=q[j+1].a;
q[j+1].a=tmp;
tmp=q[j].b;
q[j].b=q[j+1].b;
q[j+1].b=tmp;
}
}
}
temp=q[0].b;
for(i=1; i<n; i++)
{
if(q[i].a>temp)
{
sum++;
temp=q[i].b;
}
else if(q[i].b<temp)
{
temp=q[i].b;
}
}
printf("Case %d: %d\n",k++,sum);
}
return 0;
}
#include<stdio.h>
#include<math.h>
struct node
{
double a;
double b;
} q[10000];
int main()
{
int n,d;
int k=1;
int sum;
while(scanf("%d%d",&n,&d)!=EOF&&(n||d))
{
int i,j;
int x,y;
int flag=0;
sum=1;
for(i=0; i<n; i++)
{
scanf("%d%d",&x,&y);
if(y>d)
flag=1;
q[i].a=x-sqrt((double)(d*d-y*y));
q[i].b=x+sqrt((double)(d*d-y*y));
}
if(flag)
{
printf("Case %d: %d\n",k++,-1);
continue;
}
double tmp,temp;
for(i=0; i<n; i++)
{
for(j=0; j<n-i-1; j++)
{
if(q[j].a>q[j+1].a)
{
tmp=q[j].a;
q[j].a=q[j+1].a;
q[j+1].a=tmp;
tmp=q[j].b;
q[j].b=q[j+1].b;
q[j+1].b=tmp;
}
}
}
temp=q[0].b;
for(i=1; i<n; i++)
{
if(q[i].a>temp)
{
sum++;
temp=q[i].b;
}
else if(q[i].b<temp)
{
temp=q[i].b;
}
}
printf("Case %d: %d\n",k++,sum);
}
return 0;
}
相关文章推荐
- commons-logging log4j slf4j logback
- linux下各种格式软件包的安装
- 线程、进程间通信
- sql中Distinct&Count的用法
- Direct-X学习笔记--纹理映射
- 自己的包poi操作Excel工具
- C语言中给数组赋随机值
- 制表回车换行符
- git使用详解
- LeetCode题解——9Palindrome Number
- openStack动态迁移
- 经常使用vi编辑命令
- sqlserver使用户只能在某个架构下建立表和存储过程
- Nginx写IO占用高故障处理
- GSM tutorial
- Sqlmap渗透测试是常用语句
- 广播、多播、UNIX套接域
- Spring学习(23)--- AOP之Introductions应用
- 使用NPOI对Excel单元格增加下拉选框
- Android布局优化总结