[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^ ...
随机推荐
- 互联网时代: 从Uber的供需匹配看开发需求
每次看电影中的有钱人都有专属司机接送,只要坐在车里,就有人帮忙开车门.提行李及关车门.感觉是非现实的遥远画面,现在却有机会可以在日常生活中成真! 2009年Travis Kalanick及Garret ...
- LeetCode Golang 6. Z 字形变换
6. Z 字形变换 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: L ...
- Jquery 过滤器(first,last,not,even,odd)的使用和区别
Jquery 过滤器主要有first,last,not,even,odd等等,它们分别表示: 代码如下: $(function(){ $("#menu li:first").cli ...
- K3内部表数据名称
在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单.----------------系统设置------------------------FStatus: ...
- 安装laravel项目出错
我的本地是7.0.1,而下载下来的原来是运行在7.0.8版本的,于是执行:composer install 时,报了一堆错.解决办法:删掉composer.lock,重新composer instal ...
- stylus 移动端边框1像素问题解决方案
border($border-width = 1px, $border-color = #ccc, $border-style = solid, $radius = 0) // 为边框位置提供定位参考 ...
- myeclipse的git插件安装
首先需要一个myeclies的Git插件EGit 点击下载5.0.1 官方网站
- vue自定义组件并使用
以下是使用自己写的一个简单的文件上传框为例 1.自定义组件结构(一个js文件,一个vue文件),最好单独放一个文件 2.upload.vue 内容 其中,action是父组件传递给子组件的参数,使用p ...
- 洛谷 P2152 [SDOI2009]SuperGCD (高精度)
这道题直接写了我两个多小时-- 主要是写高精度的时候还存在着一些小毛病,调了很久 在输入这一块卡了很久. 然后注意这里用while的形式写,不然会炸 最后即使我已经是用的万进制了,但是交上去还是有两个 ...
- jquery中的jsonp跨域调用
jquery jsonp跨域调用接口