题目大意:平面上有 $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=;
#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=,f=;
while(ch<'' || ch>'') f|=ch=='-',ch=getchar();
while(ch>='' && ch<='') x=x*+ch-'',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,,n) p[i].x=read(),p[i].y=read()-p[i].x*p[i].x;
sort(p+,p+n+);
pp[m=]=p[];
FOR(i,,n) if(p[i].x!=p[i-].x) pp[++m]=p[i];
FOR(i,,m){
while(tp> && cross(stk[tp]-stk[tp-],pp[i]-stk[tp-])<=) tp--;
stk[++tp]=pp[i];
}
printf("%d\n",tp-);
}

CF1142C U2(计算几何,凸包)的更多相关文章

  1. CF1142C U2

    题目链接:洛谷 codeforces $y>x^2+bx+c$也就是$y-x^2>bx+c$ 左边是点,右边是直线. 维护上凸包. 虽然这么简单但就是做不出来. #include<c ...

  2. 计算几何---凸包问题(Graham/Andrew Scan )

    概念 凸包(Convex Hull)是一个计算几何(图形学)中的概念.用不严谨的话来讲,给定二维平面上的点集,凸包就是将最外层的点连接起来构成的凸多边型,它能包含点集中所有点的.严谨的定义和相关概念参 ...

  3. 计算几何-凸包-toleft test

    toLeftTest toLeftTest是判断一个点是否在有向直线左侧的算法. 当点s位于向量pq左侧时,toLeftTest返回true.当点s位于向量pq右侧时,toLeftTest返回fals ...

  4. 计算几何-凸包算法 Python实现与Matlab动画演示

    凸包算法是计算几何中的最经典问题之一了.给定一个点集,计算其凸包.凸包是什么就不罗嗦了 本文给出了<计算几何——算法与应用>中一书所列凸包算法的Python实现和Matlab实现,并给出了 ...

  5. 【BZOJ-1069】最大土地面积 计算几何 + 凸包 + 旋转卡壳

    1069: [SCOI2007]最大土地面积 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 2707  Solved: 1053[Submit][Sta ...

  6. uva 10652 Board Wrapping (计算几何-凸包)

    Problem B Board Wrapping Input: standard input Output: standard output Time Limit: 2 seconds The sma ...

  7. Codeforces 1045E. Ancient civilizations 构造 计算几何 凸包

    原文链接https://www.cnblogs.com/zhouzhendong/p/CF1045E.html 4K码量构造题,CF血腥残暴! 题解 首先,如果所有点颜色相同,那么直接连个菊花搞定. ...

  8. 2018牛客网暑假ACM多校训练赛(第三场)I Expected Size of Random Convex Hull 计算几何,凸包,其他

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round3-I.html 题目传送门 - 2018牛客多校赛第三场 I ...

  9. POJ3348 Cows 计算几何 凸包

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ3348 题意概括 求凸包面积(答案÷50) 题解 凸包裸题. 代码 #include <cstr ...

随机推荐

  1. Mysql占用CPU过高如何优化?(转)

    原文:http://bbs.landingbj.com/t-0-241441-1.html MySQL处在高负载环境下,磁盘IO读写过多,肯定会占用很多资源,必然CP会U占用过高. 占用CPU过高,可 ...

  2. Python3练习题 021:递归方法求阶乘

    利用递归方法求5!. 方法一 f = 1 for i in range(1,6):     f = f * i print(f)   方法二 import functools print(functo ...

  3. java中的标记接口(标签接口)

    Java中的标记接口(Marker Interface),又称标签接口(Tag Interface),具体是不包含任何方法的接口.在Java中很容易找到标记接口的例子,比如JDK中的Serialzab ...

  4. [转帖]SAP S/4 HANA与SAP Business Suite/R3(ECC)的区别

    SAP S/4 HANA与SAP Business Suite/R3(ECC)的区别 https://blog.csdn.net/zhongguomao/article/details/5351520 ...

  5. Linux(CentOS7)命令学习摘要

    1. 修改机器名 hostnamectl set-hostname newname 2. hosts主机存放位置 /etc/hosts 3. 安装tigervncserver, 然后使用vncserv ...

  6. java语句中的重定向函数

    重定向后面就不能转发了,所以return null

  7. Spring Boot+Jsp启动异常

    No Java compiler available for configuration options compilerClassName 加入maven配置 <dependency> ...

  8. Golang的时间生成,格式化,以及获取函数执行时间的方法

    最近都在通过完成一些列功能强化自己对常用api的熟悉. 然而关于时间的api几乎是最常用的api类型,所以总结一些常用的. 以YY-mm-dd HH:MM:SS.9位 输出当前时间: func mai ...

  9. python数学第七天【期望的性质】

  10. python好文章

    http://blog.csdn.net/csdnnews/article/details/78557392