Description

传送门

Solution

em又是神仙题。

考虑到目前的一个凸包,顶点点集为S。

现在在它内部或边缘上的点集为T,则贡献为2|T|−|S|,设从T中去掉S的点后得到了集合A。则2|T|−|S|=2|A|

可知AUS的凸包点集还是S。

好的关键点:A的子集个数为2|A|。怎么样是不是特别棒?

设A'是A的子集,A'US的凸包点集还是为S,这样的A'也恰好有2|A|个,完美。

所以,所有凸包点集为S的点集G,对答案的贡献都为1。

然后注意这里要记得排除共线的情况。假如G中所有点都共线就无法形成凸包啦,减掉这些就OK。PS:空集也要减掉

Code

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef long long ll;
const int mod=;
int n;
ll pw[],ans=;
struct node{int x,y;
}p[];
bool check(node a,node b,node c)
{ return (b.x-a.x)*(c.y-a.y)==(b.y-a.y)*(c.x-a.x);}
void link(int x,int y){x+=y;}
int main()
{
link(,);
scanf("%d",&n);
pw[]=;
for (int i=;i<=n;i++) pw[i]=(pw[i-]<<)%mod;
for (int i=;i<=n;i++) scanf("%d%d",&p[i].x,&p[i].y); ans=(pw[n]-n-+mod)%mod;bool _is;int cnt;
for (int i=;i<n;i++)
for (int j=i+;j<=n;j++)
{
_is=;
for (int k=;k<i;k++) if (check(p[k],p[i],p[j])) {_is=;break;}
for (int k=i+;k<j;k++) if (check(p[k],p[i],p[j])) {_is=;break;}
if (!_is) continue;
cnt=;
for (int k=j+;k<=n;k++) if (check(p[k],p[i],p[j])) cnt++;
ans=(ans-pw[cnt]+cnt++mod)%mod;
}
cout<<ans;
}

[arc082E]ConvexScore-[凸包]的更多相关文章

  1. [arc082e]ConvexScore

    题意: 给出直角坐标系中的$N$个点$(X_i,Y_i)$,定义由其中部分点构成的点集为“凸点集”当且仅当这些点恰好能构成一个凸多边形(内部没有其他点). 如图,点集$\{A,C,E\}$和$\{B, ...

  2. ARC082E ConvexScore(神奇思路)

    这题就是拼拼凑凑就出来了. 可能看英文题面容易题意杀(小写大写 \(n,N\)),这里复述一遍:对于每个构成凸多边形的点集(每个点恰好都是凸多边形的顶点,必须是严格的凸多边形,内角严格小于 180 度 ...

  3. AtCoder刷题记录

    构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...

  4. NOIp2018模拟赛三十三

    神奇的一场... 成绩:100+0+14=114 A题是个体面很恐怖的题...然而看懂题意之后转化一下就变成了一道暴力傻逼题...但是不知道为什么dalao们都没写,讲题的时候挺尴尬的...yrx“瞄 ...

  5. 【ARC082E】ConvexScore

    Description 给定二维直角坐标系上的N个点\((X_i,Y_i)\),定义一个有N个点中的部分点所构成点集为"凸点集",当且仅当该集合内的所有点恰好构成一个面积为正的凸多 ...

  6. [poj1113][Wall] (水平序+graham算法 求凸包)

    Description Once upon a time there was a greedy King who ordered his chief Architect to build a wall ...

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

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

  8. UVALive 2453 Wall (凸包)

    题意:给你一个多边形的城堡(多个点),使用最短周长的城墙将这个城堡围起来并保证城墙的每个点到城堡上的每个点的距离都不小于l 题解:因为两点间的直线一定比折线短,所以这样做 先使用所有点求得一个凸包,接 ...

  9. UVA 11168 Airport(凸包+直线方程)

    题意:给你n[1,10000]个点,求出一条直线,让所有的点都在都在直线的一侧并且到直线的距离总和最小,输出最小平均值(最小值除以点数) 题解:根据题意可以知道任意角度画一条直线(所有点都在一边),然 ...

  10. 关于2016.12.12——T1的反思:凸包的意义与应用

    2016.12.12 T1 给n个圆,保证圆圆相离,求将圆围起来的最小周长.n<=100 就像上图.考场上,我就想用切线的角度来做凸包.以圆心x,y排序,像点凸包一样,不过用两圆之间的下切线角度 ...

随机推荐

  1. fill & stroke

    - (void)stroke Draws a line along the receiver’s path using the current drawing properties. - (void) ...

  2. CSS样式命名规则

    1.样式命名外 套: wrap主导航: mainnav子导航: subnav页 脚: footer整个页面: content页 眉: header页 脚: footer商 标: label标 题: t ...

  3. mysql 聚集和非聚集索引 解析

    一.聚集索引(聚簇索引) 1. 什么是聚集索引? 比如要查找'hello',则直接找内容为hello的行,我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”.   聚集索引的叶子节点 ...

  4. vim 取消高亮

    / 匹配以后会一直有高亮,退出以后还是有: set nohlsearch nohlsearch

  5. leetcode64. Minimum Path Sum

    这个题是从左上角到右下角的路径和最小,实际就是一道dp题. 第一种写法是只初始化(0,0)位置,第二种写法则是把第一行.第一列都初始化了.个人更喜欢第二种写法,简单一点. dp的右下角的值就为最终的值 ...

  6. PHP文档

    http://php.net/manual/zh/function.socket-close.php

  7. OpenID Connect Core 1.0(七)使用混合流验证

    3.3 使用混合流验证(Authentication using the Hybrid Flow) 本节描述如何使用混合流执行验证.当使用混合流(Hybrid Flow)时一些令牌从授权端点返回,另一 ...

  8. Java SSM 客户管理 商户 管理系统 库存管理 销售报表 项目源码

    系统介绍: 1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC浏览器使用) 2.springmvc +spring4.3.7+ mybaits3.3  SSM ...

  9. java 企业门户网站 源码 自适应响应式 freemarker 静态引擎 html5 SSM

    官网 http://www.fhadmin.org/ 系统介绍: 1.网站后台采用主流的 SSM 框架 jsp JSTL,网站后台采用freemaker静态化模版引擎生成html 2.因为是生成的ht ...

  10. web前端时间戳转时间类型显示

    1.jsp头部加:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> ...