nyoj——3——多边形重心问题
来源:互联网 发布:js怎么隐藏按钮 编辑:程序博客网 时间:2024/05/01 00:55
Address:http://acm.nyist.net/JudgeOnline/problem.php?pid=3
由于LZ最近在看计算几何,昨天让队友帮我看个题目,他说nyoj上的第三题让他很无语。LZ就来试一试。拿着刚学的知识模版套用上去,思路是正确的。但是没有AC,后来看了讨论区的才知道需要判断 if(S<0.00001&&S>-0.00001) cout<<"0.000 0.000"<<endl; (没有这个判断,就会WR),我在网上看别的友友 判断的时候用了0.0000001,到现在还不是太懂这个判断。
自己刚开始模版套上去的代码,(后面是自己把代码精简后的,因为求重心和面积的时候中间有求共同的结果)
#include<iostream>#include<cstdio>#include<cmath>using namespace std;typedef struct {double x,y;}Point;Point p[10010];double s;int n;double area(){int k;p[n]=p[0];s=0;if(n<3) return 0;for(k=0;k<n;k++){s+=p[k].x*p[k+1].y;s-=p[k+1].x*p[k].y;}s/=2;return (s>0?s:-s);}Point gravi(){p[n]=p[0];double A,a;Point t;int j;t.x=0; t.y=0; A=0;for(j=0;j<n;j++){ a=p[j].x*p[j+1].y-p[j+1].x*p[j].y;t.x+=(p[j].x+p[j+1].x)*a;t.y+=(p[j].y+p[j+1].y)*a;A+=a;}if(A==0) return t;t.x /= A*3;t.y /= A*3;return t;}int main(){int T;cin>>T;Point z;while(T--){int i;cin>>n;for(i=0;i<n;i++)cin>>p[i].x>>p[i].y;double S=area();if(S<0.00001&&S>-0.00001)cout<<"0.000 0.000"<<endl;else{printf("%.3lf ",S);z=gravi();printf("%.3lf\n",z.x+z.y);}}return 0;}
简短。
#include<iostream>#include<cstdio>#include<cmath>using namespace std;struct Point{double x,y;}p[10010];int n;int main(){int T;cin>>T;while(T--){int i,j,k;cin>>n;for(i=0;i<n;i++)cin>>p[i].x>>p[i].y;double S,A,a;Point t; t.x=0; t.y=0; S=0;p[n]=p[0];for(i=0;i<n;i++){a=(p[i].x*p[i+1].y-p[i+1].x*p[i].y)/2.0;S+=a;t.x+=a*(p[i].x+p[i+1].x)/3.0;t.y+=a*(p[i].y+p[i+1].y)/3.0;}A=t.x+t.y;if(fabs(S)<1e-6){cout<<"0.000 0.000"<<endl;}else{printf("%.3lf %.3lf\n",fabs(S),A/S);}}return 0;}
- nyoj——3——多边形重心问题
- nyoj 3 多边形重心问题
- nyoj 3 多边形重心问题
- nyoj-3-多边形重心问题
- nyoj-3-多边形重心问题
- NYOJ--3--多边形重心问题
- nyoj 3 多边形重心问题
- nyoj 3 多边形重心问题
- nyoj 3 多边形重心问题
- NYOJ-3 多边形重心问题
- NYOJ 3:多边形重心问题
- NYOJ 3 多边形重心问题
- NYOJ-----3---多边形重心问题
- NYOJ3——多边形重心问题
- NYOJ多边形重心问题
- NYOJ - 多边形重心问题
- NYOJ-3 多边形重心问题【计算几何】
- nyoj--3-多边形重心问题(计算几何)
- 写一个函数,算出两个文件的相对路径的
- linux c api
- 基督徒与网络游戏
- [译]学好数学能让程序员的水平更高
- 怎么使用Sticky Footer代码(让页脚紧贴页面底部的方法)
- nyoj——3——多边形重心问题
- LBP算子介绍
- 数据
- 数码知识扫盲:微单和单反到底有什么区别
- 在线客服交流系统部署和安装
- oracle设置自动增长列
- 如何通过adb shell 修改/显示 GPIO 状态
- Eclipse快捷键大全(转载)
- POJ 2387 Til the Cows Come Home 最短路-Dijkstra