动态维护凸包面积。

 //Achen
#include<bits/stdc++.h>
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
#define Formylove return 0
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int n;
LL ans; template<typename T> void read(T &x) {
char ch=getchar(); T f=; x=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} struct pt {
LL x,y;
pt(){}
pt(LL x,LL y):x(x),y(y){}
friend bool operator <(const pt&A,const pt&B) {
return A.x<B.x||(A.x==B.x&&A.y<B.y);
}
}p[];
pt operator -(const pt&A,const pt&B) { return pt(A.x-B.x,A.y-B.y); }
pt operator +(const pt&A,const pt&B) { return pt(A.x+B.x,A.y+B.y); }
LL dot(pt A,pt B) { return A.x*B.x+A.y*B.y; }
LL cross(pt A,pt B) { return A.x*B.y-A.y*B.x; } set<pt>s1,s2;
#define IT set<pt>::iterator
void delr(set<pt>&s,pt P,IT l,IT r,int f) {
while(cross(P-(*l),(*r)-(*l))<=) {
if(f) ans+=cross((*r)-(*l),P-(*l));
s.erase(r); r=l;
if(l!=s.begin()) l--;
else break;
}
} void dell(set<pt>&s,pt P,IT l,IT r,int f) {
while(cross((*r)-P,(*l)-P)<=) {
if(f) ans+=cross((*l)-P,(*r)-P);
s.erase(*l); l=r; r++;
if(r==s.end()) break;
}
} void ins(set<pt>&s,pt P,int f) {
IT l,r,it;
if(s.size()<) {
s.insert(P); return ;
}
it=s.lower_bound(P);
if(it==s.end()) {
pt st=*s.begin(); --it;
if(f) ans-=cross((*it)-st,P-st);
r=it; l=r; --l;
if(cross(P-(*l),(*r)-(*l))<) delr(s,P,l,r,f);
}
else {
if(it==s.begin()) {
pt ed=*s.rbegin();
if(f) ans-=cross(P-ed,(*it)-ed);
l=it; r=l; ++r;
if(cross((*r)-P,(*l)-P)<) dell(s,P,l,r,f);
}
else {
r=it; l=r; --l;
if((*r).x==P.x&&(*r).y==P.y) return ;
if(cross(P-(*l),(*r)-(*l))>=) return ;
if(f) ans+=cross((*l)-P,(*r)-P);
r=l;
if(l!=s.begin()) {
--l;
delr(s,P,l,r,f);
}
l=it; r=l; ++r;
if(r!=s.end()) dell(s,P,l,r,f);
}
}
s.insert(P);
} int main() {
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
For(i,,) read(p[i].x),read(p[i].y);
ans=abs(cross(p[]-p[],p[]-p[]));
For(i,,) {
ins(s1,p[i],);
ins(s2,pt(-p[i].x,-p[i].y),);
}
read(n);
For(i,,n) {
pt P;
read(P.x); read(P.y);
ins(s1,P,);
ins(s2,pt(-P.x,-P.y),);
printf("%lld\n",ans);
}
Formylove;
}

bzoj1249: SGU277 HERO 动态凸包的更多相关文章

  1. 2019.02.21 bzoj1249: SGU277 HERO 动态凸包(set+凸包)

    传送门 题意:动态插入点,维护凸包面积. 思路:用setsetset维护极角序来支持面积查询即可. 然后注意选原点的时候要从初始三个点随机平均系数来避免精度误差. 代码: #include<bi ...

  2. 【BZOJ 2300】 2300: [HAOI2011]防线修建 (动态凸包+set)

    2300: [HAOI2011]防线修建 Description 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可是A国上 ...

  3. BZOJ 2300: [HAOI2011]防线修建( 动态凸包 )

    离线然后倒着做就变成了支持加点的动态凸包...用平衡树维护上凸壳...时间复杂度O(NlogN) --------------------------------------------------- ...

  4. [NOI2007]货币兑换Cash(DP+动态凸包)

    第一次打动态凸包维护dp,感觉学到了超级多的东西. 首先,set是如此的好用!!!可以通过控制一个flag来实现两种查询,维护凸包和查找斜率k 不过就是重载运算符和一些细节方面有些恶心,90行解决 后 ...

  5. BZOJ [HAOI2011]防线修建(动态凸包)

    听说有一种很高端的东西叫动态凸包维护dp就像学一下,不过介于本人还不会动态凸包就去学了下,还是挺神奇的说,维护上下凸包的写法虽然打得有点多不过也只是维护复制黏贴的事情而已罢了. 先说下动态凸包怎么写吧 ...

  6. 【BZOJ 1701】Cow School(斜率优化/动态凸包/分治优化)

    原题题解和数据下载 Usaco2007 Jan 题意 小牛参加了n个测试,第i个测试满分是\(p_i\),它的得分是\(t_i\).老师去掉\(t_i/p_i\)最小的d个测试,将剩下的总得分/总满分 ...

  7. Code Chef TSUM2(动态凸包+点分治)

    题面 传送门 题解 真是毒瘤随机化算法居然一分都不给 首先这种树上的题目一般想到的都是点分 我们考虑如何统计经过当前点的路径的贡献,设当前点\(u\)在序列中是第\(c\)个,那么一条路径的贡献就是 ...

  8. codeforces 70 D. Professor's task 动态凸包

    地址:http://codeforces.com/problemset/problem/70/D 题目: D. Professor's task time limit per test 1 secon ...

  9. CF70D(动态凸包)

    CF70D(动态凸包) 给出q(<=1e5)个询问,每次在加上一个点,维护凸包,或者询问某个点是否在凸包内(在边上也算). 听说可以用cdq做--但是并不会.我等蒟蒻只会用平衡树做. 首先,假设 ...

随机推荐

  1. $Android AlarmManager的用法详解

    在Android的Alarm机制中,使用AlarmManager可以实现类似闹钟这样的定时任务.在毕业设计项目中要实现定时任务的功能,所以在这里先进行一下梳理. (一)AlarmManager与Bro ...

  2. windows下载Mysql-python

    Mysql-python第三方模块官方不支持windows系统,而国外大学提供了非官方 的支持windows系统的模块,可前往 https://www.lfd.uci.edu/~gohlke/pyth ...

  3. 【HackerRank】Closest Numbers

    Sorting is often useful as the first step in many different tasks. The most common task is to make f ...

  4. cocos2dx打飞机项目笔记三:HeroLayer类和坐标系

    HeroLayer类主要是处理hero的一些相关东西,以及调用bulletLayer的一些方法,因为子弹是附属于hero的~~ HeroLayer 类的成员如下: class HeroLayer : ...

  5. 大话设计模式之PHP篇 - 观察者模式

    定义观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生改变时,会通知所有观察者对象,使他们能够自动更新自己. <?php /*主题类或称为通知类 ...

  6. iOS_数据存取(二)

    本节内容目录: 一.SQLite3 二.Core Data 一.SQlite3 SQLite3是⼀款开源的嵌入式关系型数据库,可移植性好.易使用.内存开销小SQLite3是⽆类型的,意味着你可以保存任 ...

  7. 吴恩达深度学习笔记(八) —— ResNets残差网络

    (很好的博客:残差网络ResNet笔记) 主要内容: 一.深层神经网络的优点和缺陷 二.残差网络的引入 三.残差网络的可行性 四.identity block 和 convolutional bloc ...

  8. 安装MySQL ODBC应注意的问题

    1.在32 位系统上安装: 安装32的ODBC:mysql-connector-odbc-5.2.5-win32 2.在64位系统上安装: 要同时安装32位及64位系统的ODBC: mysql-con ...

  9. Eclipse导出apk

    http://jingyan.baidu.com/article/7908e85c8dea30af491ad24f.html

  10. scheduler configuration options

    Table 4.53. Description of scheduler configuration options Configuration option = Default value Desc ...