| ||||||||||
| 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#include<iostream>
#include<iomanip>
#define eps 0.00001
using namespace std;
struct vector
{
double x,y;
}v[1000010];
struct grave
{
double x,y;
double wei;
}g[1000010];
double area(vector a,vector b,vector c)
{
return ( (b.x-a.x)*(c.y-a.y)-(b.y-a.y)*(c.x-a.x) )/2.0;
}
void getgra(vector a,vector b,vector c,int n)
{
g[n].x=(a.x+b.x+c.x)/3.0;
g[n].y=(a.y+b.y+c.y)/3.0;
g[n].wei=area(a,b,c);
}
int main()
{
int t,n;
cin>>t;
while(t--)
{
cin>>n;
for(int i=0;i<n;i++)
{
cin>>v[i].x>>v[i].y;
}
for(int i=1;i<n-1;i++)
{
getgra(v[0],v[i],v[i+1],i-1);
}
double sumx,sumy,sumarea;
sumarea=0;
for(int i=0;i<n-2;i++)
sumarea+=g[i].wei;
int flag=1;//表示逆时针
if(g[0].wei<=eps)flag=0;
sumx=0;
for(int i=0;i<n-2;i++)
{
sumx+=g[i].wei*g[i].x;
}
//if(!flag)sumx=sumx*-1;//////////////////
sumy=0;
for(int i=0;i<n-2;i++)
{
sumy+=g[i].wei*g[i].y;
}
//if(!flag)sumy=-sumy;
cout<<fixed<<setprecision(2)<<sumx/sumarea<<' '<<sumy/sumarea<<endl;
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator