貌似这道题某人已经扔给我一个多星期了(雾)

首先要知道这样一点:凸包的面积可以直接用线段的有向面积和求得。

自己口胡的证明:单纯一条线段自身的叉积就是到原点与这条线段构成三角形的面积吧,那么加加减减之后就是凸包的面积了。。

所以我们可以单独考虑每条边的贡献。

显然一条边的贡献,就是在它 一侧 点的集合的 非空子集 的 数目。

所以我们枚举点然后极角排序扫一遍。

貌似除了自己手残写错了没有什么大坑?(雾)

 #include <bits/stdc++.h>
using namespace std;
typedef long double db;
typedef long long ll;
const ll mod = ;
const db eps=1e-;
const db pi=acos(-);
int sign(db k){if(k>-eps)return ;else if(k<-eps)return -; return ;}
int cmp(db k1,db k2){ return sign(k1-k2);}
struct point{
ll x,y;
db ang;
point operator+(const point &k1)const { return point{x+k1.x,y+k1.y};}
point operator-(const point &k1)const { return point{x-k1.x,y-k1.y};}
db getw(){ return atan2(1.0*y,1.0*x);}
};
ll cross(point k1,point k2){ return (k1.x*k2.y%mod-k1.y*k2.x%mod+*mod)%mod;}
bool cmp2(point a,point b){
return a.ang<b.ang;
}
ll f[];
void init(){
f[]=;
for(int i=;i<=;i++){
f[i]=f[i-]*%mod;
}
}
point p[];
int t,n;
point v[];
int cnt=;
ll slove(int id){
cnt=;
for(int i=;i<=n;i++){
if(i==id)continue;
v[cnt++]=point{p[i].x,p[i].y,(p[id]-p[i]).getw()};
}
for(int i=;i<cnt;i++){
v[i+cnt]=point{v[i].x,v[i].y,v[i].ang+*pi};
}
sort(v,v+*cnt,cmp2);
ll res=;
for(int l=,r=;l<cnt;l++){
while (r<*cnt&&v[r].ang-v[l].ang<pi){
r++;
}
res+=cross(p[id],v[l])*((f[r-l-]-+mod)%mod)%mod;
res%=mod;
}
return res;
}
int main(){
//freopen("zoj3871.in","r",stdin);
init();
scanf("%d",&t);
while (t--){
scanf("%d",&n);
ll ans = ;
for(int i=;i<=n;i++){
scanf("%lld%lld",&p[i].x,&p[i].y);
}
for(int i=;i<=n;i++) {
ans += slove(i);
ans%=mod;
}
printf("%lld\n",ans);
}
}

zoj 3871的更多相关文章

  1. ZOJ 3871 Convex Hull(计算几何、凸包)

    题意:给n个点,|x[i]|,|y[i]| <= 1e9.求在所有情况下的子集下(子集点数>=3),凸包的面积和. 这题主要有几个方面,一个是凸包的面积,可以直接用线段的有向面积和求得,这 ...

  2. ZOJ People Counting

    第十三届浙江省大学生程序设计竞赛 I 题, 一道模拟题. ZOJ  3944http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=394 ...

  3. ZOJ 3686 A Simple Tree Problem

    A Simple Tree Problem Time Limit: 3 Seconds      Memory Limit: 65536 KB Given a rooted tree, each no ...

  4. ZOJ Problem Set - 1394 Polar Explorer

    这道题目还是简单的,但是自己WA了好几次,总结下: 1.对输入的总结,加上上次ZOJ Problem Set - 1334 Basically Speaking ac代码及总结这道题目的总结 题目要求 ...

  5. ZOJ Problem Set - 1392 The Hardest Problem Ever

    放了一个长长的暑假,可能是这辈子最后一个这么长的暑假了吧,呵呵...今天来实验室了,先找了zoj上面简单的题目练练手直接贴代码了,不解释,就是一道简单的密文转换问题: #include <std ...

  6. ZOJ Problem Set - 1049 I Think I Need a Houseboat

    这道题目说白了是一道平面几何的数学问题,重在理解题目的意思: 题目说,弗雷德想买地盖房养老,但是土地每年会被密西西比河淹掉一部分,而且经调查是以半圆形的方式淹没的,每年淹没50平方英里,以初始水岸线为 ...

  7. ZOJ Problem Set - 1006 Do the Untwist

    今天在ZOJ上做了道很简单的题目是关于加密解密问题的,此题的关键点就在于求余的逆运算: 比如假设都是正整数 A=(B-C)%D 则 B - C = D*n + A 其中 A < D 移项 B = ...

  8. ZOJ Problem Set - 1001 A + B Problem

    ZOJ ACM题集,编译环境VC6.0 #include <stdio.h> int main() { int a,b; while(scanf("%d%d",& ...

  9. zoj 1788 Quad Trees

    zoj 1788 先输入初始化MAP ,然后要根据MAP 建立一个四分树,自下而上建立,先建立完整的一棵树,然后根据四个相邻的格 值相同则进行合并,(这又是递归的伟大),逐次向上递归 四分树建立完后, ...

随机推荐

  1. OpenCV3 for python3 学习笔记3-----用OpenCV3处理图像一

    本文的内容都与图像处理有关,这时需要修改图像,比如要使用具有艺术性的滤镜.外插(extrapolate)某些部分.分割.粘贴或其他需要的操作. 1.不同色彩空间的的转换 OpenCV有数百种关于在不同 ...

  2. 浪院长 | spark streaming的使用心得

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/rlnLo2pNEfx9c/article/details/82505159 今天.主要想聊聊spar ...

  3. ubuntu 安装jdk 的两种方式:

    :通过ppa(源) 方式安装. 2:通过官网下载安装包安装. 这里推荐第1种,因为可以通过 apt-get upgrade 方式方便获得jdk的升级 使用ppa/源方式安装 1.添加ppa sudo ...

  4. Python禁用GC优化性能

    Python使用的(Garbage Collection, GC)机制是引用计数(Reference Count),其原理是为每一个内存对象进行引用计数,因此当有大量的对象新建或删除时,必须要进行大量 ...

  5. CAS 单点登录【1】入门

    1. CAS 的引入的前提和好处 很早期的公司,一家公司可能只有一个应用,慢慢的应用开始变多,如员工报销系统.审核系统.学习系统...... 每个应用都要进行注册登录,退出的时候又要一个个退出,用户操 ...

  6. Effective Java 第三版——69. 仅在发生异常的条件下使用异常

    Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...

  7. Web API中如何获取相对地址的绝对地址 Server.MapPath

    var sPath = System.Web.Hosting.HostingEnvironment.MapPath("/FilePath/");

  8. C#批量删除注释与空行

    代码发布时候有的时候需要删除代码注释与空行..方法如下 1.删除注释 方法: 第一步:打开vs2010,使用Ctrl+H快捷键,打开查询替换窗口 第二步:在‘查找选项’中,勾选‘使用’‘正则表达式’ ...

  9. Android PopupWindow 仿微信弹出效果

    项目中,我须要PopupWindow的时候特别多,这个东西也特别的好使,所以我今天给大家写一款PopupWindow 仿微信弹出效果.这样大家直接拿到项目里就能够用了! 首先让我们先看效果: 那么我首 ...

  10. js实现根据文本下标位置添加特殊标识

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...