首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
BZOJ.1132.[POI2008]Tro(极角排序)
】的更多相关文章
BZOJ.1132.[POI2008]Tro(极角排序)
BZOJ 洛谷 考虑暴力,每次枚举三个点,答案就是\(\frac12\sum_{k<j<i}(i-k)\times(j-k)\). 注意到叉积有分配率,所以固定\(k\),枚举\(i,j\),\(Ans=\frac12\sum_{k<i}(i-k)\sum_{k<j<i}(j-k)\),前缀和即可. 还有个问题是叉积是有符号的.初始时将所有点按纵坐标排序,枚举\(k\)的时候将所有向量\(i-k\)按极角排序.因为\(i>k\),\(i\)都在\(k\)的上方,向量之间…
BZOJ 1132 [POI2008]Tro(极角排序)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1132 [题目大意] 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和(N<=3000) [题解] 我们发现直接枚举三个点计算会造成很大部分的叉积重复被计算, 因此我们枚举i,计算pj和pi点差的后缀和,我们发现对于固定边ij, 其与后面的枚举量相关贡献就为pj-pi和点差后缀和的叉积. 因此我们针对每个i进行后面数据的极角排序,O(n)计算与i相关的所有答案贡献. [代码]…
bzoj 1132 POI2008 Tro
大水题=_=,可我想复杂了…… 很裸的暴力,就是加了个小优化…… 叉积求面积 :abs(xi*yj - yi*xj) 所以去掉绝对值,把 xi 和 xj 提出来就可以求和了 去绝对值加个极角排序,每次把最左边的点当成原点,然后剩下的排序,接着枚举第二个点,求叉积之和…… 坐标都是整数,用long long,最后再除2 上代码: #include <cstdio> #include <cstring> #include <cstdlib> #include <ios…
bzoj 1132 [POI2008]Tro 几何
[POI2008]Tro Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1796 Solved: 604[Submit][Status][Discuss] Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10000] Output 保留一位小数,误差不超过0.1 Sample Input 5 0 0 1…
bzoj 1132: [POI2008]Tro 计算几何
题目大意: 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 题解 我们看到了n的范围,于是我们就知道这一定不是一个线性算法 所以我们尝试枚举三角形的一个点,那么我们现在要对每一个点i,求 \(\sum_{j,k \neq i}(\overrightarrow{p_ip_j})*(\overrightarrow{p_ip_k})\) 其中*表示叉积 然后我们发现这是一个对二元对的某种操作求和的一种 我们可以想到将其转化为 \[\sum_{j,k \neq i}abs((…
【刷题】BZOJ 1132 [POI2008]Tro
Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10000] Output 保留一位小数,误差不超过0.1 Sample Input 5 0 0 1 2 0 2 1 0 1 1 Sample Output 7.0 Solution \(ans=\frac{1}{2}\sum_{i=1}^n\sum_{j=i+1}^n\sum_{k=j+1}^n|(y_j-…
【BZOJ】1132: [POI2008]Tro
题意 给\(n(1 \le n \le 3000)\)个点,求所有三角形的面积和. 分析 首先枚举一个点,发现把其它点按照关于这个点的极角排序后第\(i\)个点关于前面\(1\)到\(i-1\)的点组成的三角形的面积之和可以用前缀和和单调性来求出(因为有正负面积之分,而正负具有单调性). 题解 所以我们维护枚举第一个点然后将其它点按照关于这个点为原点的极角排序.然后从左往右扫,计算第\(i\)个点和前\(i-1\)个点的正向面积之和和负向面积之和(叉积来求). 极角排序的\(O(n^2logn)…
BZOJ1132: [POI2008]Tro(叉积 排序)
题意 世上最良心题目描述qwq 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Sol 直接模拟是$n^3$的. 考虑先枚举一个$i$,那么我们要算的就是$\sum_{j = 1}^n \sum_{k = j + 1}^n |Cross((a_j, b_j), (a_k, b_k))|$ 但是在计算相对坐标以及叉积的时候的时候会出现绝对值 前者我们在最开始按照$x$坐标排序,后者在枚举$i$时重新按照斜率从小到大排序 上面的式子可以化为 $$\sum_{j = 1}^…
BZOJ1132: [POI2008]Tro
1132: [POI2008]Tro Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 815 Solved: 211[Submit][Status] Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10000] Output 保留一位小数,误差不超过0.1 Sample Input 5 0 0 1 2 0…
bzoj1132[POI2008]Tro 计算几何
1132: [POI2008]Tro Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1722 Solved: 575[Submit][Status][Discuss] Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000] 下面N行给出N个点的坐标,其值在[0,10000] Output 保留一位小数,误差不超过0.1 Sample Input 5…