bzoj5048: 塌陷的牧场
Description
Input
Output
塌陷的格子数和询问数都很少,可以反过来移动这些格子来计算每次新覆盖了多少位置,查询区间内未被覆盖的位置可以用zkw线段树实现,时间复杂度O(qelog(n+m)+nm)。
#include<bits/stdc++.h>
const int N=;
int n,m,e,q,mx;
int xs[N],ys[N],dc=,tr[][N][N*],ds[N*N],dp=,*t,Q[N];
bool dd[N][N];
void del(int x,int y){
if(!dd[x][y])dd[x][y]=,++dc;
}
void chk(int*t,int x){
for(int w=x;w>&&!t[w^];t[w>>=]=);
int ql=,qr=;
t[x]=,Q[++qr]=x;
while(ql!=qr){
int w=Q[++ql];
if(w>=mx)ds[dp++]=w-mx;
else{
w<<=;
if(t[w])t[w]=,Q[++qr]=w;
++w;
if(t[w])t[w]=,Q[++qr]=w;
}
}
}
void dt(int*t,int l,int r){
for(l+=mx-,r+=mx+;r-l!=;l>>=,r>>=){
if(~l&&&t[l+])chk(t,l+);
if(r&&&t[r-])chk(t,r-);
}
}
void dlr(int x,int l,int r){
if(x<||x>n)return;
if(r>m)r=m;if(l<)l=;
if(l<=r)dt(tr[][x],l,r);
for(;dp;del(x,ds[--dp]));
}
void dud(int y,int l,int r){
if(y<||y>m)return;
if(r>n)r=n;if(l<)l=;
if(l<=r)dt(tr[][y],l,r);
for(;dp;del(ds[--dp],y));
}
void init(int*t,int c){
for(int i=;i<=c;++i)t[mx+i]=;
for(int i=mx-;i;--i)t[i]=t[i<<]|t[(i<<)+];
}
int main(){
scanf("%d%d%d%d",&n,&m,&e,&q);
for(mx=;mx<=std::max(n,m)+;mx<<=);
for(int i=;i<=e;++i)scanf("%d%d",xs+i,ys+i),del(xs[i],ys[i]);
for(int i=;i<=n;++i)init(tr[][i],m);
for(int i=;i<=m;++i)init(tr[][i],n);
int lp=,rp=m+,up=,dp=n+;
while(q--){
char dir;
int d,v0=dc;
scanf(" %c%d",&dir,&d);
if(dir=='R'){//m-
for(int i=;i<=e;++i)dlr(xs[i],ys[i]-d,ys[i]),ys[i]-=d;
for(int i=;i<=n;++i)dlr(i,rp-d,rp);
lp-=d,rp-=d;
}
if(dir=='L'){//m+
for(int i=;i<=e;++i)dlr(xs[i],ys[i],ys[i]+d),ys[i]+=d;
for(int i=;i<=n;++i)dlr(i,lp,lp+d);
lp+=d,rp+=d;
}
if(dir=='D'){//n-
for(int i=;i<=e;++i)dud(ys[i],xs[i]-d,xs[i]),xs[i]-=d;
for(int i=;i<=m;++i)dud(i,dp-d,dp);
up-=d,dp-=d;
}
if(dir=='U'){//n+
for(int i=;i<=e;++i)dud(ys[i],xs[i],xs[i]+d),xs[i]+=d;
for(int i=;i<=m;++i)dud(i,up,up+d);
up+=d,dp+=d;
}
printf("%d\n",dc-v0);
}
return ;
}
bzoj5048: 塌陷的牧场的更多相关文章
- 【BZOJ 5048 塌陷的牧场】
Time Limit: 25 Sec Memory Limit: 256 MBSubmit: 77 Solved: 34[Submit][Status][Discuss] Description ...
- WOJ 39 塌陷的牧场
感觉……做克老师的题,都很神仙…… 还有去年一个人坐在家里写挂60分算法的惨痛记忆,凭借着一点点记忆重新写这道题. 感觉这并查集真的很神仙,仍然不会算最后的α的复杂度……自己想感觉无论如何都要挂个lo ...
- 外边距塌陷之clearance
在一个BFC中,垂直方向上相邻的块级盒子产生外边距塌陷,本文要说一个特殊的外边距塌陷情况,即当垂直方向上,两个块级盒子之间有个浮动元素相隔时,这个时候会产生什么样的效果呢? .outer{ overf ...
- CSS的margin塌陷(collapse)
<!DOCTYPEHTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head&g ...
- QTableWidget详解(样式、右键菜单、表头塌陷、多选等)
在Qt的开发过程中,时常会用到表单(QTableWidget)这个控件,网上的资料不少,但是都是最基本的,有一些比较经常遇到的问题也说得不太清楚.所以,今天就在这里总结一下! 以下为个人模拟Windo ...
- 【bzoj1725】[USACO2006 Nov]Corn Fields牧场的安排
题目描述 Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地.FJ打算在牧场上的某几格土 ...
- 【BZOJ1725】[Usaco2006 Nov]Corn Fields牧场的安排 状压DP
[BZOJ1725][Usaco2006 Nov]Corn Fields牧场的安排 Description Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M< ...
- 【BZOJ】3437: 小P的牧场
题意 n个点,需要再一些点建立控制站,如果在第\(i\)个建站,贡献为\(a[i]\).假设前一个站为\(j<i\),则\([j+1, i]\)的点的贡献是\(\sum_{k=j+1}^{i} ...
- float导致父级元素塌陷的问题
利用float进行页面布局时常常会出现父级元素没有高度的塌陷问题,如以下代码: <!DOCTYPE html> <html> <head lang="en&qu ...
随机推荐
- select option 选中 取消js
今天在写select option标签的过程中遇到一个问题,就是刷新页面自己选中的标签回显选择的值,清空表单,下拉选择默认的值: 1.这是默认的下拉框: 2.自己定义的下拉选项,红色方框中主要处理第一 ...
- 曾经觉得学习晦涩难懂的我是如何爱上linux的
2016年冬天,我已经是一名学习计算机科学与技术专业的大三的“老腊肉”了,但是当时的水平依旧平平.就在2016年快要结束的时候,我周围的同学们被一股考研和工作的压力炸开了锅,我也在默默思考着我的人生, ...
- springmvc文件上传示例
首先要导包,用的的包是: commons-fileupload-*.*.*.jar commons-io-*.*.jar *号代表版本号 这里给大家分享一下下载链接:https://files.cnb ...
- 在数据库中sql查询很快,但在程序中查询较慢的解决方法
在写java的时候,有一个方法查询速度比其他方法慢很多,但在数据库查询很快,原来是因为程序中使用参数化查询时参数类型错误的原因 select * from TransactionNo, fmis_Ac ...
- [ZJOI2007]最大半联通子图
这个题,翻译一下题面,就是一个连通图,找他的最长链的数量... 所以说方法就比较明显了:tarjan缩点+拓扑+DP 注意也是本题唯一坑点,拓扑DP的时候要考虑重复边的情况... 呆码: #inclu ...
- RHEL 6 和 RHEL 7 的一些有关运行级别,服务管理,服务启动等方面的区别介绍
systemd是7中的新命令组,集成了service和chkconfig的功能.system命令可参考:https://www.cnblogs.com/ray-bk/p/10415173.html 运 ...
- php查询快递的类
<?php/** * Express.class.php 快递查询类 * * @copyright widuu * @license ...
- L2-024. 部落(并查集)*
L2-024. 部落 参考博客 #include<cstdio> #include<iostream> #include<set> #include<algo ...
- 初学java集合框架笔记
List接口常用方法: 方法名 说 明 boolean add(Object o) 在列表的末尾顺序添加元素, 起始索引位置从0开始 void add(int index,Object o) 在 ...
- 第四次作业——关于石墨文档(Android)客户端的案例分析
关于石墨文档(Android)客户端的案例分析 作业地址:[https://edu.cnblogs.com/campus/nenu/2016CS/homework/2505] 第一部分调研,评测 1. ...