| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
新手WA了好多次...能找到的测试数据都过了...真心求大神指导...RT
代码如下 谢谢
#include <iostream>
#include <cstdio>
#include <cmath>
#define yn yn1
using namespace std;
int xn[1005],yn[1005];
double cn[1005],dn[1005];
int n,d;
int radar()
{
int i,j;
int dd = d * d;
bool xxx = true;
for(i = 1;i <= n;i ++)
{
scanf("%d%d",&xn[i],&yn[i]);
if(yn[i] > d || yn[i] < 0)
{
xxx = false;
}
cn[i] = xn[i] + 0.0 - sqrt(dd - yn[i] * yn[i] + 0.0);
dn[i] = xn[i] + 0.0 + sqrt(dd - yn[i] * yn[i] + 0.0);
}
//for(i = 1;i <= n;i ++) printf("%d %d\n",xn[i],yn[i]);
//for(i = 1;i <= n;i ++) printf("%d %d %lf %lf %lf %lf\n",xn[i],yn[i],an[i],bn[i],cn[i],dn[i]);
if(xxx)
{
int t;
for(i = 1;i <= n;i ++)
for(j = 1;j <= n - i;j ++)
{
if(cn[j] > cn[j + 1])
{
t = cn[j];
cn[j] = cn[j + 1];
cn[j + 1] = t;
t = dn[j];
dn[j] = dn[j + 1];
dn[j + 1] = t;
}
}
//for(i = 1;i <= n;i ++) printf("%lf %lf\n",cn[i],dn[i]);
int min1 = 0,x1 = 1;
bool xxxx = false;
if(1 == n) min1 = 1;
else
{
for(i = 2;i <= n;i ++)
{
for(j = 1;j <= n;j ++)
if(cn[i] - dn[j] >= 0.000001) xxxx = true;
if(xxxx)
{
min1 ++;
for(int x2 = 1;x2 < i;x2 ++) dn[x2] =cn[n] + 1.0;
}
xxxx = false;
}
min1 ++;
}
return min1;
}
else return -1;
}
int main()
{
//freopen("a.in","r",stdin);
//freopen("a.out","w",stdout);
int cas = 0;
scanf("%d%d",&n,&d);
while(n != 0)
{
int min1 = radar();
printf("Case %d: %d\n",++ cas,min1);
scanf("%d%d",&n,&d);
//printf("n,d:%d %d\n",n,d);
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator