BZOJ3726 : PA2014Final Wykladzina
从上到下枚举下底边,维护$a[i]$表示$i$向上延伸多少距离里面没有坏点,$b[i]$表示$i$向上延伸多少距离里面最多只有1个坏点。
设$l0[i],r0[i]$表示以$a[i]$为最小值,往左往右能延伸到哪里,$l1[i],r1[i]$表示以$b[i]$为最小值,往左往右能延伸到哪里。
枚举$i$,有两种情况:
1.$a[i]$为最小值,那么找到$l0[i]$,将其左边的数用$b$进行替代,然后再找到前驱$L$;或者找到$r0[i]$,将其右边的数用$b$进行替代,然后再找到后继$R$。
2.$b[i]$为最小值,那么此时最优解显然是$[l1[i],r1[i]]$。
对于$L,R$的求解,可以先将所有$a$从大到小进行桶排序,建立一个双向链表,然后从大到小删除每一个,同时询问前驱与后继。
时间复杂度$O(nm)$。
#include<cstdio>
#define N 2010
int n,m,T,i,j,l0[N],r0[N],l1[N],r1[N],a[N],b[N],G[N],NXT[N],pre[N],nxt[N],L[N],R[N],ans;char s[N];
inline void add(int x,int y){NXT[y]=G[x];G[x]=y;}
inline void del(int x){pre[nxt[x]]=pre[x];nxt[pre[x]]=nxt[x];}
inline void up(int x){if(ans<x)ans=x;}
int main(){
scanf("%d%d",&n,&m);
for(i=1;i<=m;i++)l0[i]=l1[i]=1,r0[i]=r1[i]=m;
for(T=1;T<=n;T++){
scanf("%s",s+1);
for(i=j=1;i<=m;i++)if(s[i]=='.'){
a[i]++,b[i]++;
if(l0[i]<j)l0[i]=j;
if(l1[i]<j)l1[i]=j;
}else{
b[i]=a[i]+1,a[i]=0;
l1[i]=l0[i],l0[i]=1;
if(l1[i]<j)l1[i]=j;
j=i+1;
}
for(i=j=m;i;i--)if(s[i]=='.'){
if(r0[i]>j)r0[i]=j;
if(r1[i]>j)r1[i]=j;
}else{
r1[i]=r0[i],r0[i]=m;
if(r1[i]>j)r1[i]=j;
j=i-1;
}
for(i=0;i<=T;i++)G[i]=0;
for(i=m;i;i--)add(a[i],i),pre[i]=i-1,nxt[i]=i+1;
for(pre[1]=0,nxt[m]=m+1,i=T;~i;i--)for(j=G[i];j;j=NXT[j])L[j]=pre[pre[j]],del(j);
for(i=0;i<=T;i++)G[i]=0;
for(i=1;i<=m;i++)add(a[i],i),pre[i]=i-1,nxt[i]=i+1;
for(pre[1]=0,nxt[m]=m+1,i=T;~i;i--)for(j=G[i];j;j=NXT[j])R[j]=nxt[nxt[j]],del(j);
for(i=1;i<=m;i++){
up((r1[i]-l1[i]+1)*b[i]);
if(!a[i])continue;
j=l0[i];
if(j>1&&b[j-1]>=a[i])j=L[i]+1;
up((r0[i]-j+1)*a[i]);
j=r0[i];
if(j<m&&b[j+1]>=a[i])j=R[i]-1;
up((j-l0[i]+1)*a[i]);
}
}
return printf("%d",ans),0;
}
BZOJ3726 : PA2014Final Wykladzina的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- bzoj 3728: PA2014Final Zarowki
3728: PA2014Final Zarowki Description 有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮.你可 ...
- 【BZOJ3728】PA2014Final Zarowki 贪心
[BZOJ3728]PA2014Final Zarowki Description 有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照 ...
- BZOJ3723 : PA2014Final Gra w podwajanie
暴力搜索出所有可行的形状,可以发现本质不同的形状数只有6000个左右. 对于每个形状,它的大小不超过$8\times 8$,故可以按照右下角为原点重建坐标系,用一个unsigned long long ...
- bzoj3728: PA2014Final Zarowki
Description 有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮. 你可以去附近的商店换新灯泡,商店里所有正整数功率的 ...
- BZOJ3724 PA2014Final Krolestwo(欧拉回路+构造)
如果没有长度为偶数的限制,新建一个点向所有奇点连边,跑欧拉回路即可,显然此时一定存在欧拉回路,因为所有点度数都为偶数. 考虑长度为偶数的限制,将每个点拆成两个点放进一个二分图里,那么每条原图中的边在二 ...
- 【刷题】BZOJ 3724 PA2014Final Krolestwo
Description 你有一个无向连通图,边的总数为偶数. 设图中有k个奇点(度数为奇数的点),你需要把它们配成k/2个点对(显然k被2整除).对于每个点对(u,v),你需要用一条长度为偶数(假设每 ...
- @bzoj - 3724@ PA2014Final Krolestwo
目录 @description@ @solution@ @accepted code@ @details@ @description@ 你有一个无向连通图,边的总数为偶数. 设图中有k个奇点(度数为奇 ...
随机推荐
- ssh -v root@xxxxx 显示登录的细节
[root@ok .ssh]# ssh -v root@10.100.2.84 OpenSSH_5.3p1, OpenSSL Feb debug1: Reading configuration dat ...
- 列出zip文件内全部内容 当前目录下的所有文件压缩成zip格式的文件(file.zip)
[root@ok Desktop]# zip -r image.zip ./*.jpg adding: 20161007_113743.jpg (deflated 0%) adding: 201610 ...
- jquery学习笔记-----ajax
$(selector).load( url [,date] [,callback] ) url:请求页面的url地址 date:发送至服务器的key:value数据 callback:请求完成时的回调 ...
- Redis处理文件日志并发(2)
多线程操作同一个文件时会出现并发问题.解决的一个办法就是给文件加锁(lock),但是这样的话,一个线程操作文件时,其它的都得等待,这样的话性能非常差.另外一个解决方案,就是先将数据放在队列中,然后开启 ...
- Web开发基本准则-55实录-Web访问安全
Web开发工程师请阅读下面的前端开发准则,这是第一部分,强调了过去几年里我们注意到的Web工程师务须处理的Web访问安全基础点.尤其是一些从传统软件开发转入互联网开发的工程师,请仔细阅读,不要因为忽视 ...
- 用Feature的方式删除SharePoint2010的Page中重复的WebPart
用Feature的方式删除SharePoint2010的Page中重复的WebPart. 代码如下所示: public class SupportCenterDuplicatedWebpartRemo ...
- CoreLocation 下的定位跟踪测速
#import "ViewController.h" #import <CoreLocation/CoreLocation.h> @interface ViewCont ...
- AndroidStudio里面怎么取消与SVN的关联
在公司做项目 遇到SVN解除关联的问题 后经过解决: 1.解除文件的关联方法: 1.1. 创建一个reg文件 如下 1.2 在文件中填入如下内容并保存: Windows Registry Editor ...
- CF735C 数论\平衡树叶子节点的最大深度\贪心\斐波那契\条件归一化
http://codeforces.com/problemset/problem/735/C 题意..采用淘汰赛制..只要打输就退出比赛..而且只有两个选手打过的场数 相差不超过1才能比赛..最后问你 ...
- 分数try catch
要求:编写一个程序,此程序在运行时要求用户输入一个 整数,代表某门课的考试成绩,程序接着给出“不及格”.“及格”.“中”.“良”.“优”的结论.要求程序必须具备足够的健壮性,不管用户输入什 么样的内容 ...