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

对于每个凸点集$S$,设这个凸点集内部(包括内部的点,所有顶点和边上的点)一共有$m$个点,那么它对答案的贡献就是$2^{m-|S|}$,求答案模998244353的结果。
$1\leq N\leq 200$
题解:
这题题面看起来很可怕。。。开始以为要写凸包的东西,看到那个998244353又以为是多项式相关。。。但是实际上这个模数是吓人的。。。理解了题意就非常好做了。
考虑一个凸点集$S$,设它内部的所有点组成的集合为$A$,显然$|A|=m$。那么有$2^{m-|S|}=2^{|A|-|S|}$。观察$|A|-|S|$这个式子,实际上表示的就是$S$内部不包括边界上的点的个数,即$|\complement_{A}S|$。那么$2^{m-|S|}$的实际意义就是$\complement_{A}S$的子集个数。至此题意就转化为在$\complement_{A}S$里随便选点,选出来之后再加上$S$,方案总数便是对答案的贡献。这些选点方案的共同点就是边界$S$是一样的,而凸点集内部的情况不同,换一种说法,就是这些点所能形成的凸包都是相同的。考虑原问题点集中的任意一个凸包,它对答案的贡献就是内部的点集的子集个数。然后我们惊奇的发现:这求的就是能形成凸包的点集个数!进一步,就是原点集中凸包的个数!
那么可以直接暴力。。。考虑不能形成凸包的情况,就是三个或以上的点共线,设有$(n+2)$个点共线,那么答案就会少$2^n$。原本点集中点数大于等于3的点集个数是$2^{n}-1-n-\binom{n}{2}$,再减去上面共线的情况减少的就行了。。。
$O(n^3)$搞定
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#define mod 998244353
using namespace std;
typedef long long ll;
int n,ans,x[],y[],pw[];
int main(){
scanf("%d",&n);
pw[]=;
for(int i=;i<=n;i++)pw[i]=(ll)pw[i-]*%mod;
for(int i=;i<=n;i++)scanf("%d%d",&x[i],&y[i]);
ans=(pw[n]-n--n*(n-)/+mod)%mod;
for(int i=;i<=n;i++){
for(int j=i+;j<=n;j++){
int tmp=;
for(int k=j+;k<=n;k++){
if((y[j]-y[i])*(x[k]-x[j])==(y[k]-y[j])*(x[j]-x[i]))tmp++;
}
ans=(ans+mod+-pw[tmp])%mod;
}
}
printf("%d",ans);
return ;
}
人家真的没有抄代码!口亨QAQ
[arc082e]ConvexScore的更多相关文章
- ARC082E ConvexScore(神奇思路)
这题就是拼拼凑凑就出来了. 可能看英文题面容易题意杀(小写大写 \(n,N\)),这里复述一遍:对于每个构成凸多边形的点集(每个点恰好都是凸多边形的顶点,必须是严格的凸多边形,内角严格小于 180 度 ...
- NOIp2018模拟赛三十三
神奇的一场... 成绩:100+0+14=114 A题是个体面很恐怖的题...然而看懂题意之后转化一下就变成了一道暴力傻逼题...但是不知道为什么dalao们都没写,讲题的时候挺尴尬的...yrx“瞄 ...
- AtCoder刷题记录
构造题都是神仙题 /kk ARC066C Addition and Subtraction Hard 首先要发现两个性质: 加号右边不会有括号:显然,有括号也可以被删去,答案不变. \(op_i\)和 ...
- 【ARC082E】ConvexScore
Description 给定二维直角坐标系上的N个点\((X_i,Y_i)\),定义一个有N个点中的部分点所构成点集为"凸点集",当且仅当该集合内的所有点恰好构成一个面积为正的凸多 ...
- AtCoder Regular Contest 082 (ARC082) E - ConvexScore 计算几何 计数
原文链接http://www.cnblogs.com/zhouzhendong/p/8934254.html 题目传送门 - ARC082 E 题意 给定二维平面上的$n$个点,定义全集为那$n$个点 ...
- [arc082E]ConvexScore-[凸包]
Description 传送门 Solution em又是神仙题. 考虑到目前的一个凸包,顶点点集为S. 现在在它内部或边缘上的点集为T,则贡献为2|T|−|S|,设从T中去掉S的点后得到了集合A.则 ...
- ConvexScore
题目描述 You are given N points (xi,yi) located on a two-dimensional plane. Consider a subset S of the N ...
- 【计算几何】【推导】【补集转化】AtCoder Regular Contest 082 E - ConvexScore
题意:平面上给你N个点.对于一个“凸多边形点集”(凸多边形点集被定义为一个其所有点恰好能形成凸多边形的点集)而言,其对答案的贡献是2^(N个点内在该凸多边形点集形成的凸包内的点数 - 该凸多边形点集的 ...
- 【Atcoder】ARC082 E - ConvexScore
[算法]计算几何 [题意]给定平面直角坐标系上的若干个点,任意选点连成凸多边形,凸多边形的价值定义为2^(n-|S|),其中n为凸多边形内部点数(含边界),|S|为顶点数,求总价值.n<=10^ ...
随机推荐
- Unity 导入的模型检测不到碰撞
解决方案 添加Mesh Collider和rigidbody,并且Collider里边2个勾要勾上. 这是我碰到的问题.如果没解决你的问题,别打我,逃~
- HDU1166 敌兵布阵 线段树详解
题解: 更新是线段树的单点更新,简单一点. 有50000个阵营,40000查询,用普通数组肯定超时.区间求和和区间查询问题用线段树最好不过了. 先说说什么是线段树. 区间[1,10]用树的方法存起来, ...
- HDU 5914 Triangle
题目来源:2016 CCPC 长春站 题意:青蛙先生想用n个长度为1~n的木棍来组成一些三角形,但是有一个坏蛋就想破坏青蛙先生的好事,请问在这n个木棍中至少偷出来几个木棍使得青蛙先生无法再用剩下的一些 ...
- php的更新
因为 PHP 那“集百家之长”的蛋疼语法,加上社区氛围不好,很多人对新版本,新特征并无兴趣.本文将会介绍自 PHP5.2 起,直至 PHP5.6 中增加的新特征 本文目录:PHP5.2 以前:auto ...
- 小试牛刀之sort()排序的实现
受大学室友的鼓动,我也打算利用公众平台来记录自己的前端知识积累,同时呢,自己总结的东西,总归会有局限性,希望小伙伴能给我指点迷津.知识就是一张巨大的网,作为一名摸不清头绪的入学者,唯一能做的事情就是吐 ...
- 2019-03-15 使用Request POST获取中加基金的PDF文件,并下载到本地
import requests import time base_url='http://www.bobbns.com/common-web/cms/content!getContentsInclud ...
- vue懒加载实现
- tp框架表单提交注意!不要提交到当前方法
tp框架 表单提交到当前方法,会重复执行显示部分和保存部分的代码.导致不知名的错误.
- [terry笔记]一个在线美化sql的网站
http://www.dpriver.com/pp/sqlformat.htm 甚是好用.
- tomcat使用及原理
1,Tomcat作为Servlet容器的基本功能 2,Tomcat的组成结构 Tomcat本身由一列的可配置的组件构成,其中核心组件是Servlet容器组件,它是所有其他Tomcat组件的顶层容器.T ...