求助大神,90分

P1652 圆

同样的错误,同问
by AFOier @ 2017-01-23 14:16:25


题目说的是穿过圆的边界,因此除了要判断起点或终点是否在圆内,而且还要判断剩下的一点是否在圆外,如果在圆外则说明穿过边界,如果两点均在圆内则无法穿过圆的边界,就不用累加该圆。
by a155936453 @ 2017-02-02 08:47:59


@[a155936453](/space/show?uid=21212) 为啥我改了之后还不行?
by Wh_Xcjm @ 2017-02-21 20:42:17


@[a155936453](/space/show?uid=21212) ???
by Wh_Xcjm @ 2017-02-21 20:43:12


原来是第六个点出错,改完后第三个点又错了 ```cpp #include<bits/stdc++.h> using namespace std; long long int x[55],y[55],r[55],s=0,n,i,x1,x2,y1,y2; int main() { cin>>n; for(i=0;i<n;i++) cin>>x[i]; for(i=0;i<n;i++) cin>>y[i]; for(i=0;i<n;i++) cin>>r[i]; cin>>x1>>y1>>x2>>y2; for(i=0;i<n;i++) { if((<=r[i]*r[i])!= (jl<=r[i]*r[i])) s++; } cout<<s; return 0; } 怎么改?@[a155936453](/space/show?uid=21212) ??? ```
by Wh_Xcjm @ 2017-02-22 18:03:29


我的判断和你的判断不同,我的是用x1,x2,y1,y2去和每一个圆的坐标进行判断,如果一个坐标在圆内,并且另外一个坐标在圆外则说明曲线一定穿过该圆,如果两个坐标都在圆内或都在圆外,则不通过该圆。 附上代码: ```cpp #include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> using namespace std; int n,tot; struct nod{ int x,y,z; }f[2001]; int main() { cin>>n; for(int i=1;i<=n;i++) cin>>f[i].x; for(int i=1;i<=n;i++) cin>>f[i].y; for(int i=1;i<=n;i++) cin>>f[i].z; int xx,yy,xx1,yy1; cin>>xx>>yy>>xx1>>yy1; for(int i=1;i<=n;i++)//判断 { int l=(xx-f[i].x)*(xx-f[i].x),ll=(yy-f[i].y)*(yy-f[i].y); int k=(xx1-f[i].x)*(xx1-f[i].x),kk=(yy1-f[i].y)*(yy1-f[i].y); if(l+ll<=f[i].z*f[i].z&&k+kk>f[i].z*f[i].z) tot++; if(k+kk<=f[i].z*f[i].z&&l+ll>f[i].z*f[i].z) tot++; } cout<<tot; return 0; } ```
by a155936453 @ 2017-02-25 08:46:08


so?
by 郑涵希 @ 2018-07-05 14:33:03


@[牵丝戏](/space/show?uid=35221) 你好像可以删除的
by Linune_Gump @ 2019-07-26 20:20:57


@[a155936453](/space/show?uid=21212) 恍然大悟【笑哭】
by Linune_Gump @ 2019-07-26 20:24:38


@[a155936453](/space/show?uid=21212) 感谢大佬,现在对了
by 山竹 @ 2019-10-15 08:45:52


| 下一页