您的位置:首页 > 其它

hdu1115

2015-09-24 19:22 330 查看
参考链接:
http://www.cnblogs.com/bo-tao/archive/2011/08/16/2141395.html http://blog.csdn.net/ysc504/article/details/8812339 http://www.cnblogs.com/jbelial/archive/2011/08/08/2131165.html
用第三个链接中的第一种方法,wr了

wr的代码:

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;

int main(){
int t;
double ansx,ansy;
double tempx,tempy;
int n;

scanf("%d",&t);
while(t--){
scanf("%d",&n);
ansx=0;
ansy=0;
for(int i=1;i<=n;i++){
scanf("%lf%lf",&tempx,&tempy);
ansx+=tempx;
ansy+=tempy;
}
printf("%.2lf %.2lf\n",ansx/n,ansy/n);
}

return 0;
}


一直wr,后来ac,

参考链接:http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=15250&messageid=1&deep=0

2015.10.30:

跟着公式来就行了

#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;

double qarea(double x1,double y1,double x2,double y2,double x3,double y3){
return ((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))/2;//公式,求面积
}

int main(){
int t;
int n;
double x1,y1,x2,y2,x3,y3;
double ansx,ansy;
double allarea;

scanf("%d",&t);
while(t--){
ansx=0;
ansy=0;
allarea=0;
scanf("%d",&n);
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);

for(int i=1;i<=n-2;i++){
scanf("%lf%lf",&x3,&y3);
double tempx=(x1+x2+x3);//把3放下面才ac,否则wr
double tempy=(y1+y2+y3);
double area=qarea(x1,y1,x2,y2,x3,y3);
allarea+=area;
ansx+=tempx*area;//少写了加号,下同
ansy+=tempy*area;
x2=x3;
y2=y3;
}

printf("%.2lf %.2lf\n",ansx/allarea/3,ansy/allarea/3);
}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: