题意:平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和

N<=3000 N个点的坐标,其值在[0,10000]

思路:按从左到右的预处理点排序

每次枚举最左点作为原点,把叉积从大到小排序

面积用叉积算,因为每次以最左的点作为原点,叉积一定都大于0

2S=xi*yj-yi*xj,xi和yi已经固定,只要维护xj和yj的后缀和就好

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef unsigned int uint;
  5. typedef unsigned long long ull;
  6. typedef pair<int,int> PII;
  7. typedef pair<ll,ll> Pll;
  8. typedef vector<int> VI;
  9. typedef vector<PII> VII;
  10. //typedef pair<ll,ll>P;
  11. #define N 100100
  12. #define M 2000010
  13. #define fi first
  14. #define se second
  15. #define MP make_pair
  16. #define pb push_back
  17. #define pi acos(-1)
  18. #define mem(a,b) memset(a,b,sizeof(a))
  19. #define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
  20. #define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
  21. #define lowbit(x) x&(-x)
  22. #define Rand (rand()*(1<<16)+rand())
  23. #define id(x) ((x)<=B?(x):m-n/(x)+1)
  24. #define ls p<<1
  25. #define rs p<<1|1
  26.  
  27. const ll MOD=1e9+,inv2=(MOD+)/;
  28. double eps=1e-;
  29. int INF=1e9;
  30. int dx[]={-,,,};
  31. int dy[]={,,-,};
  32.  
  33. struct P
  34. {
  35. ll x,y;
  36. }p[N],t[N];
  37.  
  38. int n;
  39.  
  40. ll operator*(P a,P b)
  41. {
  42. return a.x*b.y-a.y*b.x;
  43. }
  44.  
  45. ll operator<(P a,P b)
  46. {
  47. return a.y<b.y||(a.y==b.y&&a.x<b.x);
  48. }
  49.  
  50. bool cmp(P a,P b)
  51. {
  52. return a*b>;
  53. }
  54.  
  55. ll read()
  56. {
  57. ll v=,f=;
  58. char c=getchar();
  59. while(c<||<c) {if(c=='-') f=-; c=getchar();}
  60. while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
  61. return v*f;
  62. }
  63.  
  64. void solve()
  65. {
  66. sort(p+,p+n+);
  67. ll ans=;
  68. rep(i,,n-)
  69. {
  70. int m=;
  71. ll sx=,sy=;
  72. rep(j,i+,n)
  73. {
  74. m++;
  75. t[m].x=p[j].x-p[i].x;
  76. t[m].y=p[j].y-p[i].y;
  77. }
  78. sort(t+,t+m+,cmp);
  79. rep(j,,m)
  80. {
  81. sx+=t[j].x;
  82. sy+=t[j].y;
  83. }
  84. rep(j,,m)
  85. {
  86. sx-=t[j].x;
  87. sy-=t[j].y;
  88. ans+=t[j].x*sy-t[j].y*sx;
  89. }
  90. }
  91. if(ans%==) printf("%lld.5\n",ans/);
  92. else printf("%lld.0\n",ans/);
  93. }
  94.  
  95. int main()
  96. {
  97. n=read();
  98. rep(i,,n) p[i].x=read(),p[i].y=read();
  99. solve();
  100. return ;
  101. }

【BZOJ1132】Tro(叉积)的更多相关文章

  1. BZOJ1132: [POI2008]Tro(叉积 排序)

    题意 世上最良心题目描述qwq 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Sol 直接模拟是$n^3$的. 考虑先枚举一个$i$,那么我们要算的就是$\sum_ ...

  2. 【BZOJ1132】【POI2008】Tro 计算几何 叉积求面积

    链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...

  3. 【BZOJ1132】[POI2008]Tro 几何

    [BZOJ1132][POI2008]Tro Description 平面上有N个点. 求出所有以这N个点为顶点的三角形的面积和 N<=3000 Input 第一行给出数字N,N在[3,3000 ...

  4. BZOJ1132: [POI2008]Tro

    1132: [POI2008]Tro Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 815  Solved: 211[Submit][Status] ...

  5. bzoj1132[POI2008]Tro 计算几何

    1132: [POI2008]Tro Time Limit: 20 Sec  Memory Limit: 162 MBSubmit: 1722  Solved: 575[Submit][Status] ...

  6. 【计算几何】【极角序】【前缀和】bzoj1132 [POI2008]Tro

    把点按纵坐标排序,依次枚举,把它作为原点,然后把之后的点极角排序,把叉积的公式稍微化简一下,处理个后缀和统计答案. #include<cstdio> #include<cmath&g ...

  7. 【bzoj1132】[POI2008]Tro 计算几何

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

  8. BZOJ 1132 Tro

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

  9. ACM/ICPC 之 计算几何入门-叉积-to left test(POJ2318-POJ2398)

    POJ2318 本题需要运用to left test不断判断点处于哪个分区,并统计分区的点个数(保证点不在边界和界外),用来做叉积入门题很合适 //计算几何-叉积入门题 //Time:157Ms Me ...

随机推荐

  1. mysql下载与安装过程

    1:下载MySql 官网下载地址:https://dev.mysql.com/downloads/mysql/ 选择对应的下载文件.(我电脑是64位,所以这下载的是64位的下载文件) 2:解压mysq ...

  2. 应用安全 - CMS - vBulletin漏洞汇总

    SSV-15384 Date: 2004.11 漏洞类别: SQL 注入 SSV-15476 Date: 2005.2 漏洞类别: RCE SSV-15482 Date: 2005.2 类型: RCE ...

  3. Grafana配置文件

    配置文件位置 /usr/local/opt/grafana/share/grafana/default.ini /usr/local/etc/grafana/grafana.ini 配置文件调用顺序 ...

  4. Python_ONLINE_习题集_02 函数封装

    2.1 封装函数实现如下要求 例如:输入2,5 则求:2 + 22+222 + 2222+22222的和 参考答案: https://www.bilibili.com/read/cv4185619 d ...

  5. 学习Golang语言(6):类型--切片

    学习Golang语言(1): Hello World 学习Golang语言(2): 变量 学习Golang语言(3):类型--布尔型和数值类型 学习Golang语言(4):类型--字符串 学习Gola ...

  6. 关于css清除浮动

    1.overflow:hidden 较简单,兼容于市面浏览器.负面效果不详.暂不推荐使用.2.定义clear类,并把clear类赋给浮动元素的父级元素. .clear{display:block;ov ...

  7. Red Hat Enterprise Linux查看系统版本命令

    # arch 返回结果为i686表示32位系统,x86_64表示64位系统. # uname -a # uname -r # lsb_release -a # cat /proc/version # ...

  8. CentOS7.6下设置mysql服务开机启动

    在centos7中所有对服务的管理都集中到了systemctl当中,所以服务的启动.关闭.重启.开机启动等等的操作都可以用systemctl. systemctl对服务的管理都是通过配置文件,配置文件 ...

  9. Nginx 编译安装工程优化

    1.减小 nginx 编译后的文件大小 在编译 nginx 时,默认以 debug 模式进行,在 debug 模式下会插入很多跟踪和 assert 之类的信息. 在 nginx 源码文件解压后,找到源 ...

  10. makemap - 为sendmail创建数据库映像表

    SYNOPSIS(总览) [-N ] [-d ] [-f ] [-o ] [-r ] [-s ] [-v ] maptype mapname DESCRIPTION(描述) 创建 sendmail(8 ...