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

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

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

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

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

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

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

 #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. 微信小程序 --- Cannot read property 'setData' of null 解决

    在外部定义一个为 this 的 that

  2. Lua MD5加密字符串

    function md5_sumhexa(k) local md5_core = require "md5.core" k = md5_core.sum(k) return (st ...

  3. JavaScript数组(二)实例

    一.Js 数组示例常用操作. $(function () { Javascript数组学习 var nums = new Array([10], [5],[ 8], [2], [3]); 数组反转 n ...

  4. 用SSH登录远程的机器,在远程机器上执行本地机器上的脚本

    假设本地的机器IP为10.245.111.90,我们想要在10.245.111.93上执行一个保存在10.245.111.90上的脚本. 经过测试通过的命令如下: ssh root@10.245.11 ...

  5. Python3爬虫实例 代理的使用

    现在爬虫越来越难了,一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个IP的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会会禁止这个IP的访问. 所以我们需要设置一些代理服 ...

  6. java利用Tesseract 识别身份证号码

    安装Tesseract http://blog.csdn.net/hiredme/article/details/50894814 http://blog.csdn.net/yoara/article ...

  7. PHP性能分析——xhprof(window 安装xhporf)

    1 下载xhprof的php扩展 因为官方的xhprof不支持php7,所以采用tideways版本的xhprof 下载地址:windows版tideways_xhprof 将windows版的dll ...

  8. Get the client's IP address in socket.io

    From: https://www.wentong.org/codex/question-2018081564702.html When using socket.IO in a Node.js se ...

  9. SSE图像算法优化系列二十:一种快速简单而又有效的低照度图像恢复算法。

    又有很久没有动笔了,主要是最近没研究什么东西,而且现在主流的趋势都是研究深度学习去了,但自己没这方面的需求,同时也就很少有动力再去看传统算法,今天一个人在家,还是抽空分享一个简单的算法吧. 前段日子在 ...

  10. 【Tomcat】Tomcat报错追踪

    应用部署上之后无法正常启动.tomcat启动日志例如以下: 信息: Starting service Catalina 2015-7-22 18:39:31 org.apache.catalina.c ...