首页 技术 正文
技术 2022年11月15日
0 收藏 885 点赞 4,870 浏览 1654 个字

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

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

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

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<set>
#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=,maxm=;
struct P{int x,y;
}a[maxn],del[maxn];
set<P> q;
double now,ans[maxn];
int top,n,m,mark[maxn],t1,t2,b[maxn];
ll read(){
int x=,f=; char ch=getchar();
while (!isdigit(ch)) {if (ch=='-') f=-; ch=getchar();}
while (isdigit(ch)) x=x*+ch-'',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)<esp) return ;
if (x>) return ;
return -;
}
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<b.x||(a.x==b.x&&a.y<b.y);
}
void insert(P x){
set<P>::iterator r=q.lower_bound(x),l=r,t; l--;
if ((*r-*l)*(x-*l)<) return;
now-=dis(*l,*r);
while (){
t=r++;
if (r==q.end()) break;
if ((*r-x)*(*t-x)>) break;
now-=dis(*r,*t);
q.erase(t);
}
while (l!=q.begin()){
t=l--;
if ((*t-x)*(*l-x)>) 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){,}); q.insert((P){n,}); q.insert(bas);
now+=dis((P){,},bas)+dis((P){n,},bas);
m=read();
rep(i,,m) a[i].x=read(),a[i].y=read();
int Q;
Q=read();
rep(i,,Q){
op=read();
if (op==) {x=read();del[++t1]=a[x]; mark[x]=;}
else b[++t2]=t1;
}
rep(i,,m) if (!mark[i]) insert(a[i]);
int t=t1;
down(i,t2,){
while (t>b[i]) insert(del[t--]);
ans[i]=now;
}
rep(i,,t2) printf("%.2lf\n",ans[i]);
return ;
}
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,491
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,294