Oct
31
SGU 151 解题手记
2007 解题报告 Popularity: 1%
2m≤|b-c|或2m≥|b+c|就无解了。
把A放在原点,AB边放在x轴正半轴上,则B点非常容易得到。设M是BC边中点,则C点可以通过下面的方程解出来:
解得:
Submit 1: WA on 2。B C两个点输出顺序反了。
Submit 2: WA on 2。看到两个标程都把三角形退化为线段的情况归为有解而不是无解,很奇怪。查了一下OIBH,发现一个“注意”——此题中三角形的面积可以为0。所以无解条件中要去掉2m=|b-c|或者2m=|b+c|的情况。
Submit 3: PE on 1。去掉以前乱加的特殊处理。
Submit 4: PE on 6。加上判断
则可以AC,但很奇怪的是,这一点应该在判断为有解的时候就得到保证了。因为
,从而有
。
Submit 5: AC。
后记:
的情况出现于浮点误差,当
时,会因为浮点误差而造成
,如果不进行修正,就会PE或者WA了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #include <cstdio> #include <cstdlib> #include <cmath> using namespace std; int main() { double c,b,m,x,y; scanf("%lf%lf%lf",&c,&b,&m); if (2*m<fabs(c-b) || 2*m>c+b) printf("Mission impossible\n"); else { x=(4*m*m-c*c-b*b)/c/2; y=b*b-x*x>=0?sqrt(b*b-x*x):0; printf("%.5lf %.5lf\n%.5lf %.5lf\n%.5lf %.5lf\n",0.0,0.0,c,0.0,x,y); } return 0; } |
- http://www.briefdream.com/sgu-151/
- Tags:SGU, 几何, 方程, 浮点误差
- (2)comments | leave a reply
- Trackback URI
October 18th, 2007 at 19:41 pm
偷偷的告诉你……
1.可以装OpenOffice.org;
2.用google doc打开也可以。
Reply
October 18th, 2007 at 19:27 pm
:em38: pdf~ pdf~ 没ubuntu我就不能看了呀~
Reply