CF1142C U2(计算几何,凸包)
题目大意:平面上有 $n$ 个点,第 $i$ 个点是 $(x_i,y_i)$。问有多少条抛物线(二次项系数为 $1$),经过这些点中不同的两个点,并且内部(不含边界)没有任何这些点。重合的抛物线只算一次。
$1\le n\le 10^5,|x_i|,|y_i|\le 10^6$。
这题特别有趣。
考虑把抛物线方程重写:$y-x^2=bx+c$。
那么如果把每个点变成 $(x_i,y_i-x_i^2)$,那么原来 $i,j$ 两点的抛物线就变成了现在 $i,j$ 两点的直线。
那么答案就是上凸包的边数。
时间复杂度 $O(n\log n)$。
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=100010; #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define ROF(i,a,b) for(int i=(a);i>=(b);i--) #define MEM(x,v) memset(x,v,sizeof(x)) inline int read(){char ch=getchar();int x=0,f=0;while(ch<'0' || ch>'9') f|=ch=='-',ch=getchar();while(ch>='0' && ch<='9') x=x*10+ch-'0',ch=getchar();return f?-x:x; } struct point{ll x,y;bool operator<(const point &p)const{if(x!=p.x) return x>p.x;return y>p.y;}point operator-(const point &p)const{return (point){x-p.x,y-p.y};} }p[maxn],pp[maxn],stk[maxn]; int n,m,tp; ll cross(point p1,point p2){return p1.x*p2.y-p2.x*p1.y; } int main(){n=read();FOR(i,1,n) p[i].x=read(),p[i].y=read()-p[i].x*p[i].x;sort(p+1,p+n+1);pp[m=1]=p[1];FOR(i,2,n) if(p[i].x!=p[i-1].x) pp[++m]=p[i];FOR(i,1,m){while(tp>1 && cross(stk[tp]-stk[tp-1],pp[i]-stk[tp-1])<=0) tp--;stk[++tp]=pp[i];}printf("%d\n",tp-1); }
View Code
转载于:https://www.cnblogs.com/1000Suns/p/10708817.html
CF1142C U2(计算几何,凸包)相关推荐
- CF1142C U2
题目链接:洛谷 codeforces $y>x^2+bx+c$也就是$y-x^2>bx+c$ 左边是点,右边是直线. 维护上凸包. 虽然这么简单但就是做不出来. 1 #include< ...
- 凸包计算几何matlab,计算几何-凸包算法 Python实现与Matlab动画演示
凸包算法是计算几何中的最经典问题之一了.给定一个点集,计算其凸包.凸包是什么就不罗嗦了 本文给出了<计算几何--算法与应用>中一书所列凸包算法的Python实现和Matlab实现,并给出了 ...
- 2018牛客网暑假ACM多校训练赛(第三场)I Expected Size of Random Convex Hull 计算几何,凸包,其他...
原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-I.html 题目传送门 - 2018牛客多校赛第三场 I ...
- 观星(计算几何/凸包/多边形面积)
观星 对于平面上有n个点分为三类,要求寻找一个三角形,三个顶点分别属于这三类,求解最大面积. N<=3000 首先考虑到O(n2)O(n^2)O(n2)的枚举,然后对于另外一种考虑这个点的位置, ...
- java经纬度凸包graham_计算几何-凸包-Graham算法
一.点集有序化-水平排序 在计算几何中,点集往往无序,因此在计算前需要对点集进行排序,使得算法可以有序高效运行. 水平排序利用点在二维平面上固有的横纵坐标属性进行排序,只涉及点坐标的比较,与极坐标排序 ...
- 【CCCC】L3-009 长城 (30分),计算几何+凸包,极角排序
problem L3-009 长城 (30分) 正如我们所知,中国古代长城的建造是为了抵御外敌入侵.在长城上,建造了许多烽火台.每个烽火台都监视着一个特定的地区范围.一旦某个地区有外敌入侵,值守在对应 ...
- POJ 1584 计算几何 凸包
链接: http://poj.org/problem?id=1584 题意: 按照顺时针或逆时针方向输入一个n边形的顶点坐标集,先判断这个n边形是否为凸包. 再给定一个圆形(圆心坐标和半径),判断这个 ...
- 计算几何--凸包之graham scan算法
Graham scan算法主要步骤: 找出所有已知点的y值最小,如果相同,取x值最小的点,作为基准点s. 以s为基准,所有的点按照与X轴夹角从小到大排序. 使用两个栈,一个记录已访问的点,一个记录未访 ...
- 【计算几何】凸包之graham算法(适合小白)
计算几何–凸包(graham算法实现) 题目链接:LeetCode587 https://leetcode-cn.com/problemset/all/ 题目描述 在一个二维的花园中,有一些用 (x, ...
最新文章
- synchronized能不能保证有序性??
- 中文分词最佳记录刷新了,两大模型分别解决中文分词及词性标注问题丨已开源...
- JDK core dump分析
- Maven项目中获取classpath和资源文件的路径
- Oracle性能调整的误区
- GestureDetector学习之左右滑动,上下滑动屏幕切换页面
- MySQL 避坑指南之隐式数据类型转换
- 【Python】Python海龟绘图秀场
- 电影票房数据查询服务高性能与高可用实践
- CAsyncSocket使用总结
- 二叉树的存储结构入门(java描述)
- 2022-2028全球平板电脑主板行业调研及趋势分析报告
- 如果忘记了学信网手机号可以试着这样找回
- 诈骗短信报警12110
- UnityEditor代码分享导出材质贴图和Mesh本体
- 简洁风个人主页(1) html 静态布局
- rono在oracle的作用_Oracle服务的作用
- (一) u-boot 基本介绍
- 循环语句:for 语句详解
- 只有养老机器人才能拯救未来“老龄化中国”
热门文章
- 如何在WP-Config中设置WordPress错误日志
- 【 Grey Hack 】万金油脚本:在路由器上获取shell
- 前端面试题Vue-cli目录汇总
- [react] Mern和Yeoman脚手架有什么区别?
- 前端学习(3319):undefine和null
- 前端学习(3252):vs code中插件的使用
- react学习(67)--git 屏蔽文件不被追踪
- [html] 前端需要注意哪些SEO?
- [css] 说说你对相对定位、绝对定位、固定定位的理解
- [vue-cli]vue-cli怎么解决跨域的问题?