【算法】计算几何

【题意】给定平面直角坐标系上的若干个点,任意选点连成凸多边形,凸多边形的价值定义为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相关推荐

  1. 【AtCoder】ARC 081 E - Don't Be a Subsequence

    [题意]给定长度为n(<=2*10^5)的字符串,求最短的字典序最小的非子序列字符串. http://arc081.contest.atcoder.jp/tasks/arc081_c [算法]字 ...

  2. 【Atcoder】ARC083 D - Restoring Road Network

    [算法]图论,最短路? [题意]原图为无向连通图,现给定原图的最短路矩阵,求原图最小边权和,n<=300. [题解]要求最小边权和下,原图的所有边一定是所连两端点的最短路. 那么现在将所有最短路 ...

  3. 【AtCoder】ARC095 E - Symmetric Grid 模拟

    [题目]E - Symmetric Grid [题意]给定n*m的小写字母矩阵,求是否能通过若干行互换和列互换使得矩阵中心对称.n,m<=12. [算法]模拟 [题解]首先行列操作独立,如果已确 ...

  4. 【atcoder】Enclosed Points [abc136F]

    题目传送门:https://atcoder.jp/contests/abc136/tasks/abc136_f 题目大意:在平面上有$n$个点我们,定义一个点集的权值为平面上包含这个点集的最小矩形所包 ...

  5. 【atcoder】GP 2 [agc036C]

    题目传送门:https://atcoder.jp/contests/agc036/tasks/agc036_c 题目大意:给你一个长度为$N$初始全0的序列,每次操作你可以找两个不同的元素,一个自增1 ...

  6. 【AtCoder】AGC034

    AGC034 刷了那么久AtCoder我发现自己还是只会ABCE(手动再见 A - Kenken Race 大意是一个横列,每个点可以跳一步或者跳两步,每个格子是空地或者石头,要求每一步不能走到石头或 ...

  7. 【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 √ √ ● ○ ...

  8. 【AtCoder】ARC088

    C - Multiple Gift 题解 首项是X,每次乘个2,暴力统计 代码 #include <bits/stdc++.h> #define fi first #define se s ...

  9. 【AtCoder】diverta 2019 Programming Contest 2

    diverta 2019 Programming Contest 2 A - Ball Distribution 特判一下一个人的,否则是\(N - (K - 1) - 1\) #include &l ...

  10. 【AtCoder】AGC017

    A - Biscuits dp[i][0/1]表示当前和是偶数还是奇数,直接转移即可 #include <bits/stdc++.h> #define fi first #define s ...

最新文章

  1. Php的基本语法学习
  2. centos7服务器搭建elasticsearch7.6.0集群
  3. Sharepoint学习笔记 –架构系列—11 Sharepoint的服务器端对象模型(Server Object Model) 3.服务层次结构
  4. c语言添加收支情况,C语言编写一个计算个人所得税的程序,要求输入收入金额,能够输...
  5. linux中paste的用法,在Linux中使用Paste命令来合并行,包括使用Paste命令技巧及注意事项...
  6. java中nodelist的用法_我可以在Java中使用for-each遍历一个NodeList吗?
  7. 青岛大学计算机科学技术学院官网,田呈亮 - 青岛大学 - 计算机科学技术学院
  8. 做好前端的话HTML和CSS基础必须夯实!
  9. Windows域控 批量设置用户下次登录 修改密码【全域策略生效】
  10. VSFTP安装配置总结
  11. Delphi 之 定时器 (TTimer组件)
  12. 124. PHP 性能分析
  13. 【matlab】:matlab中不断的出现计算过程怎么办
  14. 凸优化第八章几何问题 8.4极值体积椭圆
  15. 如何使用使用PS批量制作字幕
  16. html5的元素拖拽
  17. 解决SpringCloud客户端启动报错:“Field XXX required a bean of type XXX that could not be found”
  18. (六)我的JavaScript系列:更好的JavaScript之CoffeeScript
  19. POI 单元格设置背景颜色失效(背景色设置方式),以及背景颜色生效后单元格边框线消失问题解决
  20. 【联想RQ940】联想RQ940更换主板电池+重新设置BIOS

热门文章

  1. Struts2_HelloWorld_3
  2. MySQL 6.子查询
  3. 菜单设计器(Menu Designer)及其B/S,C/S双重实现(B/S开源)
  4. 薛家德(帮别人名字作诗)
  5. 如果你的苹果Mac键盘锁住了要怎么办呢?快来看看此教程吧!
  6. 珍惜吧,这届世界杯之后,怕是再也看不到他们了
  7. docker-compose 学习:通过 image 指令指定镜像搭建一个简单LNMP
  8. web后端本地开发(同步线上)环境搭建
  9. volatile解析(转)
  10. RH4 构建ORACLE ASM