bzoj千题计划236:bzoj2300: [HAOI2011]防线修建
http://www.lydsy.com/JudgeOnline/problem.php?id=2300
维护动态凸包,人懒用的set
用叉积判断,不要用斜率
#include<set>
#include<cmath>
#include<cstdio>
#include<iostream> using namespace std; #define N 100001 struct node
{
int x,y; node(int x_=,int y_=):x(x_),y(y_){} bool operator < (node p) const
{
return x<p.x;
}
}e[N]; set<node>S; struct data
{
int ty,x;
}g[N<<]; bool cut[N]; double ans; double Ans[N<<];
int tot; void read(int &x)
{
x=; char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)) { x=x*+c-''; c=getchar(); }
} node operator - (node A,node B) { return node(A.x-B.x,A.y-B.y); } double Cross(node A,node B) { return A.x*B.y-A.y*B.x; } double getdis(node A,node B)
{
return sqrt((double)(A.x-B.x)*(A.x-B.x)+(A.y-B.y)*(A.y-B.y));
} /*double get_slope(node A,node B)
{
return 1.0*(A.y-B.y)/(A.x-B.x);
}*/ void Insert(node a)
{
set<node>::iterator it=S.lower_bound(a),l=it,r=it,t;
l--;
if(Cross(*r-*l,a-*l)<) return;
ans-=getdis(*r,*l);
while()
{
t=r; r++;
if(r==S.end()) break;
if(Cross(*r-a,*t-a)<) ans-=getdis(*t,*r),S.erase(*t);
else break;
}
while(l!=S.begin())
{
t=l; l--;
if(Cross(*t-a,*l-a)<) ans-=getdis(*t,*l),S.erase(*t);
else break;
}
it=S.upper_bound(a);
ans+=getdis(a,*it);
ans+=getdis(a,*(--it));
S.insert(a);
} int main()
{
freopen("defense.in","r",stdin);
freopen("defense.out","w",stdout);
int n,x,y;
read(n); read(x); read(y);
S.insert(node(,));
S.insert(node(x,y));
S.insert(node(n,));
ans=getdis(node(,),node(x,y))+getdis(node(x,y),node(n,));
int m;
read(m);
for(int i=;i<=m;++i) read(e[i].x),read(e[i].y);
int q;
read(q);
for(int i=;i<=q;++i)
{
read(g[i].ty);
if(g[i].ty==)
{
read(g[i].x);
cut[g[i].x]=true;
}
}
for(int i=;i<=m;++i)
if(!cut[i]) Insert(e[i]);
for(int i=q;i;--i)
if(g[i].ty==) Ans[++tot]=ans;
else Insert(e[g[i].x]);
for(int i=tot;i;--i) printf("%.2lf\n",Ans[i]);
return ;
}
2300: [HAOI2011]防线修建
Time Limit: 10 Sec Memory Limit: 512 MB
Submit: 1042 Solved: 576
[Submit][Status][Discuss]
Description
上图中,A,B,C,D,E点为A国城市,且目前都要保护,那么修建的防线就会是A-B-C-D,花费也就是线段AB的长度+线段BC的长度+线段CD的长度,如果,这个时候撤销B点的保护,那么防线变成下图
Input
Output
对于每个询问输出1行,一个实数v,表示修建防线的花费,保留两位小数
Sample Input
2
1 2
3 2
5
2
1 1
2
1 2
2
Sample Output
5.84
4.47
HINT
bzoj千题计划236:bzoj2300: [HAOI2011]防线修建的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
- bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹
http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...
- bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机
http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...
- bzoj千题计划250:bzoj3670: [Noi2014]动物园
http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...
随机推荐
- 软件测试_APP测试_兼容性测试
APP的兼容测试主要就是测试APP的安装.启动.运行.卸载测试,以及安装时间 .启动时间.CPU占用.内存占用.流量耗用.电量耗用等性能上的测试. 兼容性测试点: 一.内部兼容性: 1.与本地和其他主 ...
- 机器视觉及图像处理系列之二(C++,VS2015)——图像级的人脸识别(1)
接上一篇,一切顺利的话,你从github上clone下来的整个工程应该已经成功编译并生成dll和exe文件了:同时,ImageMagic程序亦能够打开并编辑图像了,如此,证明接下来的操练你不会有任何障 ...
- PAT甲级题解-1100. Mars Numbers (20)-字符串处理
没什么好说的,注意字符串的处理,以及当数字是13的倍数时,只需高位叫法的单词.比如26,是“hel”,而不是“hel tret”. 代码: #include <iostream> #inc ...
- 关于sql server2008数据库的连接的几个问题及解决办法
写在开头 不得不说给一台新的服务器配置和部署的确是个不小的工程,在这里先感谢我们的DEV焉域政同学在这方面做出的一些贡献:把安装过程极为困难的sql server2008成功安装到服务器上,并且为我们 ...
- qemu-img.exe 工具 简介
1. 下载地址 https://cloudbase.it/qemu-img-windows/ 2. 解压缩 然后扔到 system32目录下 或者是 修改环境变量-- 我很懒,我决定扔到system3 ...
- Git从零开始(二)
前面提交了一个test1.txt文件,接下来看看这个文件接下来的命运. 一.继续修改并提交 在test1.txt中修改后, git status 查看git的状态, 会提示我们文件test1.txt被 ...
- Hbase之IP变更后无法启动问题解决
# 修改hbase IP配置文件地址:/opt/hbase-1.1.13/conf/hbase-site.xml <property> <name>hbase.zookeepe ...
- 骑士 HYSBZ - 1040(基环树+树形dp)
Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬.最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里,在和平环境中 ...
- SPOJ DQUERY - D-query (莫队算法|主席树|离线树状数组)
DQUERY - D-query Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query ...
- 51Nod 1175 区间中第K大的数 (可持久化线段树+离散)
1175 区间中第K大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题 一个长度为N的整数序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有 ...