思路:我刚开始算三角形的方法是原点叉积三条边,然后计算每条边向量积的贡献,但是对于同一条线上的点

有时候没有办法抵消掉。。。。。

看网上的思路是对于一个三角形的面积通过两条边的叉积获得,然后枚举一个点,排序去掉公式的绝对值,记录

后缀和进行计算。。。

看的这篇博客。。

https://www.cnblogs.com/GXZlegend/p/7509699.html

#include<bits/stdc++.h>
#define LL long long
#define fi first
#define se second
#define mk make_pair
#define pii pair<int,int>
#define piii pair<int, pair<int,int> > using namespace std; const int N = + ;
const int M = + ;
const int inf = 0x3f3f3f3f;
const LL INF = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9 + ;
const double eps = 1e-; int n; LL sufx[N], sufy[N], ans; struct Point {
int x, y;
Point(int x = , int y = ) {
this->x = x;
this->y = y;
} Point operator - (const Point &rhs) {
return Point(x - rhs.x, y - rhs.y);
}
} p[N], q[N]; bool cmp1(const Point &a, const Point &b) {
return a.x == b.x ? a.y < b.y : a.x < b.x;
} bool cmp2(const Point &a, const Point &b) {
return a.y * b.x < b.y * a.x;
} int main()
{
scanf("%d", &n); for(int i = ; i <= n; i++) {
scanf("%lld%lld", &p[i].x , &p[i].y);
} sort(p + , p + n + , cmp1); for(int i = ; i <= n; i ++) { for(int j = i + ; j <= n ;j++) {
q[j] = p[j] - p[i];
} sort(q + i + , q + n + , cmp2); for(int j = n; j > i; j--)
{
sufx[j] = sufx[j + ] + q[j].x;
sufy[j] = sufy[j + ] + q[j].y;
ans += q[j].x * sufy[j + ] - q[j].y * sufx[j + ];
}
} if(ans & ) printf("%lld.5\n", ans / );
else printf("%lld.0\n", ans / );
return ;
}

bzoj 1132 几何的更多相关文章

  1. bzoj 1132 [POI2008]Tro 几何

    [POI2008]Tro Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1796  Solved: 604[Submit][Status][Discu ...

  2. [POI 2008][BZOJ 1132]Tro

    这题我真是无能为力了 这题的做法还是挺简单的 枚举左下角的点做为原点,把其余点按极角排序    PS.是作为原点,如枚举到 k 时,对于所有 p[i] (包括p[k]) p[i]-=p[k] (此处为 ...

  3. BZOJ.1132.[POI2008]Tro(极角排序)

    BZOJ 洛谷 考虑暴力,每次枚举三个点,答案就是\(\frac12\sum_{k<j<i}(i-k)\times(j-k)\). 注意到叉积有分配率,所以固定\(k\),枚举\(i,j\ ...

  4. BZOJ 1132 [POI2008]Tro(极角排序)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1132 [题目大意] 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和(N&l ...

  5. bzoj 1132 POI2008 Tro

    大水题=_=,可我想复杂了…… 很裸的暴力,就是加了个小优化…… 叉积求面积 :abs(xi*yj - yi*xj) 所以去掉绝对值,把 xi 和 xj 提出来就可以求和了 去绝对值加个极角排序,每次 ...

  6. 【刷题】BZOJ 1132 [POI2008]Tro

    Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10 ...

  7. bzoj 2659 几何

    首先考虑(0, 0)到(p, q)这条直线. y = q / p * x. sum{k = 0 to (p - 1) / 2} [q / p * k] 就是直线下方的点数.sum{k = 0 to ( ...

  8. bzoj 1132: [POI2008]Tro 计算几何

    题目大意: 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 题解 我们看到了n的范围,于是我们就知道这一定不是一个线性算法 所以我们尝试枚举三角形的一个点,那么我们现 ...

  9. BZOJ 1132 Tro

    Tro [问题描述] 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 [输入格式] 第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10 ...

随机推荐

  1. 手脱ASPack v2.12

    1.PEID查壳提示为: ASPack 2.12 -> Alexey Solodovnikov 2.载入OD,程序入口点是一个pushad,在他的下一行就可以进行ESP定律,下硬件访问断点然后s ...

  2. git 从新的git 库中拉取---变换git地址用;

    2.先删后加 git remote rm origin git remote add origin [url]----- example :   git remote add origin http: ...

  3. 平衡树【Treap】

    平衡树的板题,用Treap实现. 具体参见注释,写的很详细了,包括了原理,实现以及注意事项 蒟蒻写个注释板子写了两天,太弱了QAQ 感谢niiick指导 Code #include<iostre ...

  4. 子集系列(一) 传统subset 问题,例 [LeetCode] Subset, Subset II, Bloomberg 的一道面试题

    引言 Coding 问题中有时会出现这样的问题:给定一个集合,求出这个集合所有的子集(所谓子集,就是包含原集合中的一部分元素的集合). 或者求出满足一定要求的子集,比如子集中元素总和为定值,子集元素个 ...

  5. 对WebView进行的一些设置

    webView.getSettings().setJavaScriptEnabled(true); //使用setting WebSettings webSettings = webView.getS ...

  6. Keras学习笔记1--基本入门

    """ 1.30s上手keras """ #keras的核心数据结构是“模型”,模型是一种组织网络层的方式,keras 的主要模型是Sequ ...

  7. Network File System

    Network File System 2014-12-31 #system 接着上一篇博客Distributed Systems 分布式系统来扯淡,之前的博客一再在写文件系统,这次继续,只不过是分布 ...

  8. Intellij IDEA 快捷键整理(转)

    Ctrl+Shift + Enter,语句完成 “!”,否定完成,输入表达式时按 “!”键 Ctrl+E,最近的文件 Ctrl+Shift+E,最近更改的文件 Shift+Click,可以关闭文件 C ...

  9. 利用PhantomJS生成网站截图

    var page = require('webpage').create(); page.open('http://qq.com', function () { page.render('exampl ...

  10. [php]http响应头解析

    (Status-Line) HTTP/ OK Cache-Control no-cache Content-Length Content-Type image/gif Date Sat, Dec :: ...