poj解题报告——1328
2014-11-15 14:05
357 查看
不得不说,这题是让我饱受折磨,毕竟第一次做贪心算法,而且WA了好多次,幸好有学长的帮助,最终找到了问题所在,是在快排上是问题,double高位不可向int低位转换,由于一开始强制转换导致虽然样例和其他的测试数据过了,但还是WA,现在改完了就对了,附上AC代码,ps:这题通过率是22%,真心不简单
代码如下
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
struct point
{
double left,right;
}p[1000], temp;
int cmp(const void *a,const void *b)
{
double t = ((struct point*)a)->left-((struct point*)b)->left;
if(fabs(t)<0.000001)
return 0;
return (t<0.0? -1:1);
}
void main()
{
int n,i,flag;
double r,a,b;
int kase=1;
int countt;
while (scanf("%d%lf",&n,&r)&&(n!=0||r!=0))
{
flag=0;
for (i=0;i<n;i++)
{
scanf("%lf%lf",&a,&b);
if (fabs(b)>r)
{
flag=1;
}
else
{
p[i].left=a*1.0-sqrt(r*r-b*b);
p[i].right=a*1.0+sqrt(r*r-b*b);
}
}
if(flag==1)
{
printf("Case %d: -1\n",kase++);
}
else
{
countt=1;
qsort(p,n,sizeof(p[0]),cmp);
temp=p[0];
for(i=1;i<n;i++)
{
if(p[i].left>temp.right)
{
countt++;
temp=p[i];
}
else if(p[i].right<temp.right)
{
temp=p[i];
}
}
printf("Case %d: %d\n",kase++,countt);
}
}
}
代码如下
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
struct point
{
double left,right;
}p[1000], temp;
int cmp(const void *a,const void *b)
{
double t = ((struct point*)a)->left-((struct point*)b)->left;
if(fabs(t)<0.000001)
return 0;
return (t<0.0? -1:1);
}
void main()
{
int n,i,flag;
double r,a,b;
int kase=1;
int countt;
while (scanf("%d%lf",&n,&r)&&(n!=0||r!=0))
{
flag=0;
for (i=0;i<n;i++)
{
scanf("%lf%lf",&a,&b);
if (fabs(b)>r)
{
flag=1;
}
else
{
p[i].left=a*1.0-sqrt(r*r-b*b);
p[i].right=a*1.0+sqrt(r*r-b*b);
}
}
if(flag==1)
{
printf("Case %d: -1\n",kase++);
}
else
{
countt=1;
qsort(p,n,sizeof(p[0]),cmp);
temp=p[0];
for(i=1;i<n;i++)
{
if(p[i].left>temp.right)
{
countt++;
temp=p[i];
}
else if(p[i].right<temp.right)
{
temp=p[i];
}
}
printf("Case %d: %d\n",kase++,countt);
}
}
}
相关文章推荐
- poj1328解题报告(贪心、线段交集)
- POJ1328解题报告
- POJ 1328 解题报告
- 2018.1.21【POJ - 1328】小岛与雷达解题报告(二维转一维,贪心)
- poj1328解题报告.
- poj1579解题报告
- poj 1182 食物链 解题报告
- poj_1068_Parencodings_解题报告
- POJ 1002 解题报告 487-3279
- POJ 1797 Heavy Transportation(Dijkstra变形) 解题报告
- POJ 1003 解题报告 Hangover
- poj 1325Machine Schedule解题报告-最小顶点覆盖等于最大匹配数
- POJ 1423 Big Number 解题报告
- POJ 1008 解题报告 Maya Calendar
- poj 2105 解题报告
- poj2533解题报告
- poj2051解题报告(优先队列)
- POJ 1904 King's Quest 解题报告
- POJ 3278解题报告(C语言版)//Catch That Cow
- POJ 2692 称硬币 解题报告