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…
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…
题目描述 平面上有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 题解 计算几何 考虑到所求的所有三角形的面积之和为$\sum\limits_{i<j<k}|(y_j-y_i)*(x_k-x_i)-(y_k-y_i)*(x_j-x_i)|$,这样直接计算的时间复杂…
把点按纵坐标排序,依次枚举,把它作为原点,然后把之后的点极角排序,把叉积的公式稍微化简一下,处理个后缀和统计答案. #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> using namespace std; #define N 3002 typedef double db; typedef long long ll; struct Point{ll x,y;db ji…
题目大意: 平面上有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((…
题意 世上最良心题目描述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 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 题解:我们将所有点按x排序,枚举最左面的点.设当前点为i,我们想计算右面所有点对与其形成三角形的面…
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 把面积转换成叉积的形式,也就是说我们要求$\sum\limits_{i=1}^{n}\s…
[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…
链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/46605807"); } 题解: 首先暴力是 O(n3)O(n^3) 求每一个三角形面积. 但是三角形面积怎么求?一般我们都是用叉积--等等?那一个叉积不是被算了非常多遍? 好了.正解出来了,先有序地把点排排序保证不重…