Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 51305 | Accepted: 11514 |
Description
Input
Output
Sample Input
3 2 1 2 -3 1 2 1 1 2 0 2 0 0
Sample Output
Case 1: 2 Case 2: 1
思路:把岛屿可能所在位置转化为区间
代码1:
#include<stdio.h> #include<math.h> #include<iostream> #include<algorithm> using namespace std; struct node { double x1,x2; }p[1003]; bool cmp (node a,node b) { return (a.x2<b.x2); } int main () { int n,r; double x,y; int i,j,t=0,sum; while(cin>>n>>r) { if(n==0&&r==0) break; int flag=1; t++; for(i=0;i<n;i++) { cin>>x>>y; if(y>r || y<0) flag=0; p[i].x1=x-sqrt(r*r-y*y); p[i].x2=x+sqrt(r*r-y*y); } if(flag==0) { cout<<"Case "<<t<<":"<<" "<<"-1"<<endl; continue; } sort(p,p+n,cmp); sum=1; double temp=p[0].x2; for(i=1;i<n;i++) { if(p[i].x1>temp) { temp=p[i].x2; sum++; } } cout<<"Case "<<t<<":"<<" "<<sum<<endl; } return 0; }
#include<stdio.h> #include<math.h> #include<iostream> #include<algorithm> using namespace std; struct node { double x1,x2; }p[1003]; bool cmp (node a,node b) { return (a.x1<b.x1); } int main () { int n,r; double x,y; int i,j,t=0,sum; while(cin>>n>>r) { if(n==0&&r==0) break; int flag=1; t++; for(i=0;i<n;i++) { cin>>x>>y; if(y>r || y<0) flag=0; p[i].x1=x-sqrt(r*r-y*y); p[i].x2=x+sqrt(r*r-y*y); } if(flag==0) { cout<<"Case "<<t<<":"<<" "<<"-1"<<endl; continue; } sort(p,p+n,cmp); sum=1; double temp=p[0].x2; for(i=1;i<n;i++) { if(p[i].x2<temp) temp=p[i].x2; else if(p[i].x1>temp) { temp=p[i].x2; sum++; } } cout<<"Case "<<t<<":"<<" "<<sum<<endl; } return 0; }
poj 1328 Radar Installation,布布扣,bubuko.com
原文:http://blog.csdn.net/fyxz1314/article/details/37882523