bzoj1132 [POI2008]Tro
2018-04-03 08:06
330 查看
题目描述
平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000
输入
第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10000]
输出
保留一位小数,误差不超过0.1
样例输入
5
0 0
1 2
0 2
1 0
1 1
样例输出
7.0
枚举i,求出所有点与i形成的向量
对于向量的面积用叉积
$x_j*y_k-y_j*x_k$
如果假设i<j<k
为了保证算出来是整数,把向量按极角排序,这里不用atan2,而是用叉积
$\sum\limits_{j=i+1}^n(x_j*\sum\limits_{k=j+1}^ny_k-\sum\limits_{k=j+1}^nx_k*y_j)$
发现维护2个后缀和就行了
平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000
输入
第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10000]
输出
保留一位小数,误差不超过0.1
样例输入
5
0 0
1 2
0 2
1 0
1 1
样例输出
7.0
枚举i,求出所有点与i形成的向量
对于向量的面积用叉积
$x_j*y_k-y_j*x_k$
如果假设i<j<k
为了保证算出来是整数,把向量按极角排序,这里不用atan2,而是用叉积
$\sum\limits_{j=i+1}^n(x_j*\sum\limits_{k=j+1}^ny_k-\sum\limits_{k=j+1}^nx_k*y_j)$
发现维护2个后缀和就行了
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> using namespace std; typedef long long lol; struct Point { lol x,y; Point(lol a=0,lol b=0) {x=a,y=b;} bool operator<(const Point &a)const {return x*a.y-y*a.x>0;} }p[6010],l[6010]; lol sumx[6010],sumy[6010],ans; lol n,num; Point operator -(Point a,Point b) { return Point(a.x-b.x,a.y-b.y); } bool cmp2(Point a,Point b) { return a.x==b.x?a.y<b.y:a.x<b.x; } int main() {lol i,j; cin>>n; for (i=1;i<=n;i++) { scanf("%lld%lld",&p[i].x,&p[i].y); } sort(p+1,p+n+1,cmp2); for (i=1;i<=n;i++) { for (j=i+1;j<=n;j++) l[j]=p[j]-p[i]; sort(l+i+1,l+n+1); sumx[n+1]=0;sumy[n+1]=0; for (j=n;j>i;j--) { sumx[j]=sumx[j+1]+l[j].x; sumy[j]=sumy[j+1]+l[j].y; ans+=l[j].x*sumy[j+1]-l[j].y*sumx[j+1]; } } if (ans&1) printf("%lld.5\n",ans/2); else printf("%lld.0\n",ans/2); }
相关文章推荐
- BZOJ_1132_[POI2008]Tro_计算几何
- bzoj1132 [POI2008]Tro 计算几何
- bzoj1132: [POI2008]Tro (第二次做)
- BZOJ 1132: [POI2008]Tro
- BZOJ1132: [POI2008]Tro
- bzoj1132: [POI2008]Tro
- BZOJ 1132 POI2008 Tro 计算几何
- bzoj 1132: [POI2008]Tro
- [BZOJ1132][POI2008]Tro(计算几何)
- bzoj 1132: [POI2008]Tro (计算几何)
- 【bzoj1132】 [POI2008]Tro
- 【bzoj1132】[POI2008] Tro
- BZOJ 1132: [POI2008]Tro 计算几何,统计对答案贡献
- BZOJ 1132: [POI2008]Tro|计算几何
- BZOJ 1132 [POI2008]Tro(极角排序)
- [几何] BZOJ 1132 [POI2008]Tro
- 【计算几何】【极角序】【前缀和】bzoj1132 [POI2008]Tro
- BZOJ1132: [POI2008]Tro
- bzoj 1132: [POI2008]Tro 计算几何
- BZOJ1132 [POI2008]Tro