博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ2300: [HAOI2011]防线修建
阅读量:4653 次
发布时间:2019-06-09

本文共 1903 字,大约阅读时间需要 6 分钟。

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=2300

(我只是在发以前写过的题。。

因为题目没说强制在线,所以离线乱搞就可以了。先把点删掉然后一个一个插进去,维护一个动态凸包就可以了。

#include
#include
#include
#include
#include
#include
#define esp 1e-7#define ll long long#define oo 1152921504606846976#define rep(i,l,r) for (int i=l;i<=r;i++)#define down(i,l,r) for (int i=l;i>=r;i--)using namespace std;const int maxn=200500,maxm=17;struct P{ int x,y;}a[maxn],del[maxn];set

q;double now,ans[maxn];int top,n,m,mark[maxn],t1,t2,b[maxn];ll read(){ int x=0,f=1; char ch=getchar(); while (!isdigit(ch)) { if (ch=='-') f=-1; ch=getchar();} while (isdigit(ch)) x=x*10+ch-'0',ch=getchar(); return x*f;}P operator -(P a,P b){ return (P){a.x-b.x,a.y-b.y};}double operator *(P a,P b){ return (a.x*b.y-a.y*b.x);}int cmp(double x){ if (fabs(x)

0) return 1; return -1;}double dis(P a,P b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}bool operator <(P a,P b){ return a.x
::iterator r=q.lower_bound(x),l=r,t; l--; if ((*r-*l)*(x-*l)<0) return; now-=dis(*l,*r); while (1){ t=r++; if (r==q.end()) break; if ((*r-x)*(*t-x)>0) break; now-=dis(*r,*t); q.erase(t); } while (l!=q.begin()){ t=l--; if ((*t-x)*(*l-x)>0) break; now-=dis(*l,*t); q.erase(t); } q.insert(x); l=r=q.find(x); l--;r++; now+=dis(*r,x)+dis(*l,x);}int main(){ int op,x; n=read(); P bas; bas.x=read(); bas.y=read(); q.insert((P){ 0,0}); q.insert((P){n,0}); q.insert(bas); now+=dis((P){ 0,0},bas)+dis((P){n,0},bas); m=read(); rep(i,1,m) a[i].x=read(),a[i].y=read(); int Q; Q=read(); rep(i,1,Q){ op=read(); if (op==1) {x=read();del[++t1]=a[x]; mark[x]=1;} else b[++t2]=t1; } rep(i,1,m) if (!mark[i]) insert(a[i]); int t=t1; down(i,t2,1){ while (t>b[i]) insert(del[t--]); ans[i]=now; } rep(i,1,t2) printf("%.2lf\n",ans[i]); return 0;}

 

转载于:https://www.cnblogs.com/ctlchild/p/5011116.html

你可能感兴趣的文章
LeetCode Delete Operation for Two Strings
查看>>
[SDOI2014]重建
查看>>
[AH2017/HNOI2017]礼物
查看>>
gated pixelCNN。
查看>>
[题解]CQOI2012 T1 编号 number
查看>>
python的函数
查看>>
C# GUID的使用
查看>>
2D物体一直朝向某个2D物体(LookAt2D)
查看>>
面向对象编程里面的继承
查看>>
Handling duplicate form submission in Spring MVC
查看>>
Navicat 或者Java的JDBC通过SSH Tunnel连接MySQL数据库
查看>>
Android studio怎么去掉应用的标题栏
查看>>
[Cocos2D-X官方文档:解读CCArray类]
查看>>
为什么重写equals()方法就必须重写hashCode()方法
查看>>
深度优先搜索和广度优先搜索
查看>>
jquery有缝滚动
查看>>
关于TileBrush中Viewbox,Viewport以及Stretch,AlignmentX/Y的详细研究
查看>>
心态感言
查看>>
大数据——大价值、大机遇、大变革(全彩)
查看>>
常用SQL查询语句
查看>>