BZOJ 2829 凸包】的更多相关文章

思路: 把信用卡周围去掉  只剩下中间的长方形 最后的答案加上一个圆 //By SiriusRen #include <bits/stdc++.h> using namespace std; ; ; int card,n,m,k; double a,b,r,xx,yy,theta,Ans; struct Point{ double x,y;Point(){} Point(double X,double Y){x=X,y=Y;} }point[N],tubao[N]; bool cmp1(Poi…
2829: 信用卡凸包 Description Input Output Sample Input 2 6.0 2.0 0.0 0.0 0.0 0.0 2.0 -2.0 1.5707963268 Sample Output 21.66 HINT 本样例中的2张信用卡的轮廓在上图中用实线标出,如果视1.5707963268为Pi/2(pi为圆周率),则其凸包的周长为16+4*sqrt(2) [分析] 乍一看还是不会做hh. 把那个圆拿出来,做凸包,最后再加一个圆形的周长就好了. 至于为什么,我还是…
2829: 信用卡凸包 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 1342  Solved: 577 [Submit][Status][Discuss] Description Input Output Sample Input 2 6.0 2.0 0.0 0.0 0.0 0.0 2.0 -2.0 1.5707963268 Sample Output 3.333 HINT 本样例中的2张信用卡的轮廓在上图中用实线标出,如果视1.570796…
凸包裸题 #include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,j,k) for (int i=j;i<=k;++i) #define D(i,j,k)…
将每张卡四个角的圆心跑graham出正常凸包,再加上一个圆就好了. 要注意先输入的是x,找点时三角函数瞎换就过了.. #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> #include<cmath> #define N 40050 #define PI 3.1415926535898 #define exp 1e-8 using namespace…
题目大意 在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成 的多边形面积最大. 分析 枚举对角线的一个端点 另一个端点开始转 转的时候求出对角线左边面积最大的三角形,右边面积最大的三角形 三角形面积\(=\)对角线长度\(*\)高 高\(=\)两条平行线间任意两点距离 过对角线做两条平行线,对着凸包夹一夹 可以发现这实际上就是一个旋转卡壳 \(O(n^2)\) solution #include <cstdio> #include <cst…
题目大意 具体自己看吧link 读入n,D,表示n关 大概就是第i关有i只僵尸排成一队来打出题人 最前面那只是编号为\(i\)的僵尸,最后面的一只是编号为\(1\)的僵尸 最前面的僵尸离出题人\(X_i\)的距离,其它每只僵尸离前一只距离为固定值D 僵尸平均每秒1米,植物每秒攻击力\(y\) 植物连续攻击,可以当它激光,打死前一只瞬间就可以开始打后一只 对于每一关,我们要选择一个尽可能小的y,保证出题人不被打死 求y总和最小为多少 分析 我们考虑\(y\)要满足什么条件 首先要打死每只僵尸,极限…
思路: 倒着加显然吧  动态维护这个凸包就好了 //By SiriusRen #include <bits/stdc++.h> using namespace std; ; int n,m,q,vis[N]; double now; struct Point{int x,y;}point[N],jy,tmp,tt; struct Query{int x,op;double ans;}ask[N]; Point operator-(Point a,Point b){ Point c;c.x=a.…
思路: $(x_0-x)^2+(y_0-y)^2<=x^2+y^2$ $y>=(-x_0/y_0)x+(x_0^2+y_0^2)/2y0$ 这显然就是凸包了 以一个斜率不断向下(上)走  找到第一个接触到的点 离线可以用cdq分治一发 他左边的判一判是不是都符合在圆内 这不能离线就很难搞了 感觉自己代码能力捉鸡   写棵splay估计要调死 强烈安利二进制分组做法 非常强 在log个凸包上 二分一下斜率 判一判 就好了 //By SiriusRen #include <bits/stdc…
题目大意 你要维护一个向量集合,支持以下操作: 1.插入一个向量(x,y) 2.删除插入的第i个向量 3.查询当前集合与(x,y)点积的最大值是多少.如果当前是空集输出0 分析 按时间线建线段树 大致同bzoj 3533 [Sdoi2014]向量集 同样的,我们不必要搞出包含询问所在时间点的所有向量再求凸包三分 一个时间点的答案就是它线段树上所有祖先的答案的最大值 复杂度一样是\(n\log^2n\) solution 没写 挖坑…