【Atcoder】ARC082 E - ConvexScore
【算法】计算几何
【题意】给定平面直角坐标系上的若干个点,任意选点连成凸多边形,凸多边形的价值定义为2^(n-|S|),其中n为凸多边形内部点数(含边界),|S|为顶点数,求总价值。n<=10^5。
【题解】
首先凸多边形的价值转化为凸多边形内部点数的选择方案(每个点选或不选)。
先考虑没有多点共线的情况。
本题中,对于每个方案,凸多边形外面没有点。①
对于一个若干点的图,只有唯一的凸多边形包括整个图。②
由上可知,①和②等价,也就是对于整个图枚举点选或不选的方案,唯一对应了一个答案,总价值为2^n-n^2-1(n为总点数,减去选0.1.2个点的方案)。
再来处理多点共线的情况,显然不能使选择的所有点都在同一直线上,所以枚举同一直线上的点数减去,细节见代码。
本题套路:枚举同一直线上的点,利用在同一直线上的点必定在其中两个点组成的直线上的原理,只需枚举任意两点,再枚举第三点是否在该直线上即可,复杂度O(1/6*n^3)。
题外套路:枚举多少直线交于一点,利用交于同一点的直线必然经过其中两条直线相交点的原理,直接枚举两条直线后再枚举第三条即可。
#include<cstdio> int n,d,ans,x[210],y[210],p[210]; int main(){scanf("%d",&n);int M=998244353;p[0]=1;for(int i=1;i<=n;i++){scanf("%d%d",&x[i],&y[i]);p[i]=1ll*p[i-1]*2%M;}ans=p[n]-n-1;for(int i=1;i<=n;i++){for(int j=i+1;j<=n;j++){d=0;for(int k=j+1;k<=n;k++)d+=(y[i]-y[j])*(x[i]-x[k])==(y[i]-y[k])*(x[i]-x[j]);ans=(ans+M-p[d])%M;}}printf("%d",ans); }
View Code
转载于:https://www.cnblogs.com/onioncyc/p/7506340.html
【Atcoder】ARC082 E - ConvexScore相关推荐
- 【AtCoder】ARC 081 E - Don't Be a Subsequence
[题意]给定长度为n(<=2*10^5)的字符串,求最短的字典序最小的非子序列字符串. http://arc081.contest.atcoder.jp/tasks/arc081_c [算法]字 ...
- 【Atcoder】ARC083 D - Restoring Road Network
[算法]图论,最短路? [题意]原图为无向连通图,现给定原图的最短路矩阵,求原图最小边权和,n<=300. [题解]要求最小边权和下,原图的所有边一定是所连两端点的最短路. 那么现在将所有最短路 ...
- 【AtCoder】ARC095 E - Symmetric Grid 模拟
[题目]E - Symmetric Grid [题意]给定n*m的小写字母矩阵,求是否能通过若干行互换和列互换使得矩阵中心对称.n,m<=12. [算法]模拟 [题解]首先行列操作独立,如果已确 ...
- 【atcoder】Enclosed Points [abc136F]
题目传送门:https://atcoder.jp/contests/abc136/tasks/abc136_f 题目大意:在平面上有$n$个点我们,定义一个点集的权值为平面上包含这个点集的最小矩形所包 ...
- 【atcoder】GP 2 [agc036C]
题目传送门:https://atcoder.jp/contests/agc036/tasks/agc036_c 题目大意:给你一个长度为$N$初始全0的序列,每次操作你可以找两个不同的元素,一个自增1 ...
- 【AtCoder】AGC034
AGC034 刷了那么久AtCoder我发现自己还是只会ABCE(手动再见 A - Kenken Race 大意是一个横列,每个点可以跳一步或者跳两步,每个格子是空地或者石头,要求每一步不能走到石头或 ...
- 【Atcoder】AtCoder Beginner Contest 174总结
目录 A Air Conditioner B Distance C Repsept D Alter Altar E Logs F Range Set Query A B C D E F √ √ ● ○ ...
- 【AtCoder】ARC088
C - Multiple Gift 题解 首项是X,每次乘个2,暴力统计 代码 #include <bits/stdc++.h> #define fi first #define se s ...
- 【AtCoder】diverta 2019 Programming Contest 2
diverta 2019 Programming Contest 2 A - Ball Distribution 特判一下一个人的,否则是\(N - (K - 1) - 1\) #include &l ...
- 【AtCoder】AGC017
A - Biscuits dp[i][0/1]表示当前和是偶数还是奇数,直接转移即可 #include <bits/stdc++.h> #define fi first #define s ...
最新文章
- Php的基本语法学习
- centos7服务器搭建elasticsearch7.6.0集群
- Sharepoint学习笔记 –架构系列—11 Sharepoint的服务器端对象模型(Server Object Model) 3.服务层次结构
- c语言添加收支情况,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
- linux中paste的用法,在Linux中使用Paste命令来合并行,包括使用Paste命令技巧及注意事项...
- java中nodelist的用法_我可以在Java中使用for-each遍历一个NodeList吗?
- 青岛大学计算机科学技术学院官网,田呈亮 - 青岛大学 - 计算机科学技术学院
- 做好前端的话HTML和CSS基础必须夯实!
- Windows域控 批量设置用户下次登录 修改密码【全域策略生效】
- VSFTP安装配置总结
- Delphi 之 定时器 (TTimer组件)
- 124. PHP 性能分析
- 【matlab】:matlab中不断的出现计算过程怎么办
- 凸优化第八章几何问题 8.4极值体积椭圆
- 如何使用使用PS批量制作字幕
- html5的元素拖拽
- 解决SpringCloud客户端启动报错:“Field XXX required a bean of type XXX that could not be found”
- (六)我的JavaScript系列:更好的JavaScript之CoffeeScript
- POI 单元格设置背景颜色失效(背景色设置方式),以及背景颜色生效后单元格边框线消失问题解决
- 【联想RQ940】联想RQ940更换主板电池+重新设置BIOS