【题解】

  把某一行或某一列有4个1的都统计出来,然后首尾接上尽量长的,注意首尾不能选上同一个矩阵,要维护前缀、后缀1最大值和次大值。

  还要注意维护矩阵内连续1的长度,因为可能有 0 0 0 0 这种情况。

                         0 1 1 0

                         0 1 1 0

                         0 0 0 0

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define rg register
#define N 200010
using namespace std;
int n,m,b[][],ans[][],f[],pos,pos2,Mx;
bool v[][];
struct rec{
int l,r;
}s[N][][];
inline int read(){
int k=,f=; char c=getchar();
while(c<''||c>'')c=='-'&&(f=-),c=getchar();
while(''<=c&&c<='')k=k*+c-'',c=getchar();
return k*f;
}
int main(){
n=read();
for(rg int i=;i<=n;i++){
memset(v,,sizeof(v));
for(rg int j=;j<;j++)
for(rg int k=;k<;k++) b[j][k]=read();
if(b[][]||b[][]){
int tmp=;
if(b[][]&&b[][]) tmp++;
Mx=max(Mx,tmp);
}
if(b[][]||b[][]){
int tmp=;
if(b[][]&&b[][]) tmp++;
Mx=max(Mx,tmp);
}
if(b[][]||b[][]){
int tmp=;
if(b[][]&&b[][]) tmp++;
Mx=max(Mx,tmp);
}
if(b[][]||b[][]){
int tmp=;
if(b[][]&&b[][]) tmp++;
Mx=max(Mx,tmp);
}
for(rg int j=;j<;j++){
bool ok=;
for(rg int k=;k<;k++)if(!b[j][k]) ok=;
if(ok) ans[][j]+=,v[][j]=;
}
for(rg int j=;j<;j++){
bool ok=;
for(rg int k=;k<;k++)if(!b[k][j]) ok=;
if(ok) ans[][j]+=,v[][j]=;
}
for(rg int j=;j<;j++){
if(v[][j]) continue;
for(rg int k=;k<;k++)if(b[j][k]){
s[i][][j].l++;
}
else break;
for(rg int k=;k>=;k--)if(b[j][k]){
s[i][][j].r++;
}
else break;
}
for(rg int j=;j<;j++){
if(v[][j]) continue;
for(rg int k=;k<;k++)if(b[k][j]){
s[i][][j].l++;
}
else break;
for(rg int k=;k>=;k--)if(b[k][j]){
s[i][][j].r++;
}
else break;
}
// for(rg int j=0;j<4;j++) printf("-%d ",s[i][0][j].l); puts("l");
// for(rg int j=0;j<4;j++) printf("-%d ",s[i][0][j].r); puts("r");
// for(rg int j=0;j<4;j++) printf("+%d ",s[i][1][j].l); puts("l");
// for(rg int j=0;j<4;j++) printf("+%d ",s[i][1][j].r); puts("r");
}
for(rg int j=;j<;j++){
for(rg int k=;k<;k++){
int mx=,mx2=,pos=,pos2=,mx3=,mx4=;
for(rg int i=;i<=n;i++){
if(s[i][j][k].l>mx){
mx=s[i][j][k].l;
pos=i;
}
}
for(rg int i=;i<=n;i++){
if(s[i][j][k].l>mx2&&i!=pos) mx2=s[i][j][k].l;
}
for(rg int i=;i<=n;i++){
if(s[i][j][k].r>mx3){
mx3=s[i][j][k].r;
pos2=i;
}
}
for(rg int i=;i<=n;i++){
if(s[i][j][k].r>mx4&&i!=pos2) mx4=s[i][j][k].r;
}
if(pos!=pos2) ans[j][k]+=mx+mx3;
else ans[j][k]+=max(mx+mx4,mx2+mx3);
// printf("[%d %d %d %d]\n",mx,mx2,mx3,mx4);
}
}
for(rg int i=;i<;i++)
for(rg int j=;j<;j++) Mx=max(Mx,ans[i][j]);
printf("%d\n",Mx);
return ;
}

牛客练习赛29 B 列队的更多相关文章

  1. 牛客练习赛 29 E 位运算?位运算!(线段树)

    题目链接  牛客练习赛29E 对$20$位分别建立线段树.首先$1$和$2$可以合起来搞(左移右移其实是等效的) 用个lazy标记下.转移的时候加个中间变量. $3$和$4$其实就是区间$01$覆盖操 ...

  2. 牛客练习赛29 B

    炎热的早上,gal男神们被迫再操场上列队,gal男神们本来想排列成x∗x的正方形,可是因为操场太小了(也可能是gal男神太大了),校长安排gal男神们站成多个4∗4的正方形(gal男神们可以正好分成n ...

  3. 牛客练习赛29 F 算式子

    https://www.nowcoder.com/acm/contest/211/F 经典题. 1.分区间 2.向下取整的值变化 & 合并相同值 #include <bits/stdc+ ...

  4. 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D

    目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...

  5. 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B

    牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...

  6. 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A

    牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...

  7. 最小生成树--牛客练习赛43-C

    牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 ​ 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...

  8. 牛客练习赛28-B(线段树,区间更新)

    牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ ​ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, ​ 1 l r 询问区间[l,r]内的元素和 ​ 2 l r 询问区间[l,r]内的 ...

  9. 牛客练习赛26:D-xor序列(线性基)

    链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...

随机推荐

  1. Phoenix数据覆盖的一种解决方案

    最近在做实时数仓,需要兼顾离线和实时两种查询方式,大致的方案是数据通过binlog抽取,经Phoenix插入,hive映射hbase表:Phoenix创建索引,实时查询Phoenix:离线查询hive ...

  2. influxdb数据库增加身份认证(windows)三

    接上一节,增加数据库身份认证 1.修改Config配置文件auth-enabled为true 2.然后重新载入最新的config配置文件打开数据库 3.验证身份认证功能是否已打开 说明身份认证功能已打 ...

  3. 进击的Python【第十五章】:Web前端基础之DOM

    进击的Python[第十五章]:Web前端基础之DOM 简介:文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示 ...

  4. macbook pro上安装vmware虚拟机

    http://xclient.info/s/vmware-fusion.html?_=84739015bcde24a4cc7a744d2d5f748b https://docs.vmware.com/ ...

  5. Hdu 5384 Danganronpa (AC自动机模板)

    题目链接: Hdu 5384 Danganronpa 题目描述: 给出n个目标串Ai,m个模式串Bj,问每个目标串中m个模式串出现的次数总和为多少? 解题思路: 与Hdu 2222  Keywords ...

  6. 暴力 hihoCoder 1178 计数

    题目传送门 /* 暴力:这题真是醉了,直接暴力竟然就可以了!复杂度不会分析,不敢写暴力程序.. 枚举x,在不重复的情况下+ans,超过范围直接break */ #include <cstdio& ...

  7. 对比度受限的自适应直方图均衡化(CLAHE)

    直方图均衡化(HE)是一种很常用的直方图类方法,基本思想是通过图像的灰度分布直方图确定一条映射曲线,用来对图像进行灰度变换,以达到提高图像 对比度的目的.该映射曲线其实就是图像的累计分布直方图(CDF ...

  8. 【转】【开源下载】基于TCP网络通信的即时聊天系统(IM系统)(c#源码)

    原文链接 强烈关注,学习!

  9. 阿里云OSS搭建移动应用直传服务的.Net C#示例

    OSS好几个都没有.Net示例,只有SDK 于是我就拿Java改成C#代码:使用前先去Nuget包管理器下载Aliyun.Acs.Core还有Aliyun.Acs.Sts: 在安装这个两个包的时候安装 ...

  10. Nginx反向代理node,实现让静态文件在同一域

    Nginx反向代理node,实现让静态文件在同一域 原文https://github.com/zhuangZhou/Blog/issues/4 不管是Vue还是React,还是传统的网站,与node服 ...