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 ...
随机推荐
-
自己搭建云存储(WIFI路由器上接硬盘)
欢迎转载opendevkit文章, 文章原始地址: http://www.opendevkit.com/?e=49 http://www.cnet.com/how-to/share-an-extern ...
-
document.querySelector和querySelectorAll方法
querySelector和querySelectorAll是W3C提供的新的查询接口,其主要特点如下: 1.querySelector只返回匹配的第一个元素,如果没有匹配项,返回null. 2.q ...
-
【代码笔记】iOS-竖状图
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
-
Javascript基础学习(1)_类型、值和变量
1.null和undefined ①概念上区别: null是一个特殊的对象,是“非对象”,使用typeof后是object对象 undefined用未定义的值表示更深层次的“空值”,它是变量的一种取值 ...
-
python中的字符串和数字连接
1. 将数字强制转换成字符串 i = 1000 str1 = "hello" print str1 + str(i) 2. 格式化成字符串 i = 1000 str1 = &quo ...
-
less-more使用方法及区别
Less按屏(空格,page up/page down)或按行(回车)查看文件 Less按屏(空格)或按行(回车)查看文件(不能向上翻)
-
Java RESTful 框架的性能比较
来源:鸟窝, colobu.com/2015/11/17/Jax-RS-Performance-Comparison/ 如有好文章投稿,请点击 → 这里了解详情 在微服务流行的今天,我们会从纵向和横向 ...
-
RecycleView设置顶部分割线(记录一个坑)
大家都知道,想给RecycleView设置分割线可以重写RecyclerView.ItemDecoration 项目过程中,遇到一个需求:RecycleView顶部有一条灰色的间隔,我想到了给Recy ...
-
2019.03.28 bzoj3322: [Scoi2013]摩托车交易(kruskal重构树+贪心)
传送门 题意咕咕咕 思路: 先把所有可以列车通的缩成一个点,然后用新图建立kruskalkruskalkruskal重构树. 这样就可以倒着贪心模拟了. 代码: #include<bits/st ...
-
基于UML的毕业选题系统建模研究
一.基本信息 标题:基于UML的毕业选题系统建模研究 时间:2018 出版源:电脑迷 领域分类:UML建模技术 二.研究背景 问题定义:为了加强学生设计分析开发软件的相关能力,有效避免结构化模型存在的 ...