codeforces480E Parking Lot
题目大意:给一个点阵,其中有的地方没有点,操作是去掉某个点,并询问当前点阵中最大的正方形
若没有修改的话,裸dp
加上修改,可以考虑时光倒流,这样答案就是递增的
可以用并查集维护点的连通性,O^2的
#include<bits/stdc++.h>
using namespace std;
#define maxn 2010
inline void MIN(int &a,int b){if(a>b)a=b;}
inline void MAX(int &a,int b){if(a<b)a=b;}
int n,m,q,sz;
int f[maxn][maxn],u[maxn][maxn],lg[maxn],rg[maxn],qx[maxn],qy[maxn],ans[maxn];
char s[maxn][maxn];
struct line{
int f[maxn];
int find(int x){return f[x]==x?x:f[x]=find(f[x]);}
}l[maxn],r[maxn];
void del(int x,int y){
l[x].f[y]=l[x].find(y-);
r[x].f[y]=r[x].find(y+);
}
int main(){
scanf("%d%d%d",&n,&m,&q);
for(int i=;i<=n;++i)
for(int j=;j<=m+;++j){
l[i].f[j]=j;
r[i].f[j]=j;
u[i][j]=i;
}
for(int i=;i<=n;++i)scanf("%s",s[i]+);
for(int i=;i<=q;++i)scanf("%d%d",&qx[i],&qy[i]),s[qx[i]][qy[i]]='X';
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
if(s[i][j]=='.')
del(i,j);
for(int i=;i<=n;++i)
for(int j=;j<=m;++j)
if(s[i][j]=='.'){
u[i][j]=u[i-][j];
f[i][j]=min(f[i-][j-]+,min(i-u[i][j],j-l[i].find(j)));
MAX(sz,f[i][j]);
}
for(int v=q;v;--v){
ans[v]=sz;
del(qx[v],qy[v]);
for(int i=;i<=n;++i){
lg[i]=qy[v]-l[i].find(qy[v]);
rg[i]=r[i].find(qy[v])-qy[v];
}
for(int i=qx[v]-;i>=;--i)MIN(lg[i],lg[i+]),MIN(rg[i],rg[i+]);
for(int i=qx[v]+;i<=n;++i)MIN(lg[i],lg[i-]),MIN(rg[i],rg[i-]);
for(int i=;i<=qx[v];++i)
while(i+sz<=n&&min(rg[i],rg[i+sz])+min(lg[i],lg[i+sz])->sz)
++sz;
}
for(int i=;i<=q;++i)
printf("%d\n",ans[i]);
return ;
}
codeforces480E Parking Lot的更多相关文章
- [LintCode] Parking Lot 停车场问题
Design a parking lot. see CC150 OO Design for details.1) n levels, each level has m rows of spots an ...
- [CareerCup] 8.4 Parking Lot 停车场问题
8.4 Design a parking lot using object-oriented principles. LintCode上的原题,请参见我的另一篇博客Parking Lot 停车场问题. ...
- Codeforces 46D Parking Lot
传送门 D. Parking Lot time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- Codeforces Round #135 (Div. 2) E. Parking Lot 线段数区间合并
E. Parking Lot time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- Amazon Interview Question: Design an OO parking lot
Design an OO parking lot. What classes and functions will it have. It should say, full, empty and al ...
- HDOJ(HDU) 1673 Optimal Parking
Problem Description When shopping on Long Street, Michael usually parks his car at some random locat ...
- Lesson 28 No parking
Text Jasper White is one of those rare people who believes in ancient myths. He has just bought a ne ...
- [PA2014]Parking
[PA2014]Parking 题目大意: 停车场是一个宽度为\(w(w\le10^9)\)的矩形.我们以其左下角顶点为原点,坐标轴平行于矩形的边,建立直角坐标系.停车场很长,我们可以认为它一直向右边 ...
- Codeforces 219E Parking Lot 线段树
Parking Lot 线段树区间合并一下, 求当前要占的位置, 不包括两端点的写起来方便一点. #include<bits/stdc++.h> #define LL long long ...
随机推荐
- Uva674 完全背包求方案数
记忆化搜索.注意输入n的位置,否则Tle. dp[i][j]表示用前j种硬币组成i分钱时的种类数 那么状态转移方程是:dp[i][j]+=DP(i-k*v[j],j-1) #include<io ...
- JQuery学习之语法
1.JQuery语法就是通过选取HTML元素,并对选取的元素执行某些操作: 基础语法:$(selector).action() (1)美元符号定义jQuery (2)选择符(selector)查询和查 ...
- [R]R下as.Date()函数的坑
问题描述: 在本地使用as.Date()函数从POSIXct类型中提取date时,出现了日期不一致的错误.导致处理数据时,总是出问题. 还好被领导发现数据有误,不然这个bug不知道还要潜伏多久.尽管如 ...
- oracle中利用trigger,sequence自动生成ID
http://zhanghong.iteye.com/blog/865937 1. 首先创建数据库表 SQL> create table customer( 2 id number(8) no ...
- over
overflow内容溢出要用到: scroll(内容溢出,出现滚动条) auto(自动适应) hidden(超出隐藏) overflow-y:scroll: 沿着y轴出现滚动条: overflow-x ...
- Zepto Code Rush 2014 A. Feed with Candy
此题用贪心求解, 首先将caramel drop类别的糖果按照高度从小到大排序,如果高度相同,按照重量从小到大排序 将fruit drop类别的糖果按照高度从小到大排序,如果高度相同,按照重量从小到大 ...
- Codeforces Round #210 (Div. 2) C. Levko and Array Recovery
题目链接 线段树的逆过程,想了老一会,然后发现应该是包含区间对存在有影响,就不知怎么做了...然后尚大神,说,So easy,你要倒着来,然后再正着来,判断是不是合法就行了.然后我乱写了写,就过了.数 ...
- POJ 1474 Video Surveillance(半平面交)
题目链接 2Y,模版抄错了一点. #include <cstdio> #include <cstring> #include <string> #include & ...
- jQuery 基本过滤选择器注意点
$(".add_shuxing_ul > li:first") 选择class为add_shuxing_ul 的子级li元素的第一个li $(".add_shux ...
- jQuery 循环问题
$("#add2sub").click(function(){ var $sxarr=$(".add_shuxing_ul > .sx_add_bg"); ...