炎热的早上,gal男神们被迫再操场上列队,gal男神们本来想排列成x∗x的正方形,可是因为操场太小了(也可能是gal男神太大了),校长安排gal男神们站成多个4∗4的正方形(gal男神们可以正好分成n个正方形)但是有些gal男神对于这种站法颇有微词,所以他们把衣服脱下来拿在手上摇晃示威,站在一条直线上的gal男神可以“交头接耳”,交头接耳会使他们联合起来闹事,人数越多,威胁程度就越大。你作为也反对这种站队方式的体育老师,为了助纣为虐,应该以一种“合理”的方式来排布n个gal男神方阵,使得最大的威胁程度最大。输出这个威胁程度。
以下为化简版题干:
现在有n个由0和1组成的4∗4矩阵,你可以任意排列这些矩阵(注意:你不能旋转或者翻转它们),但是每两个矩阵应该恰好对应。即第一列对第一列(或是第一行对第一行)比如说:
聪明的你一定可以找到一种排列方法使“连续1的序列最长”。我们定义“连续的1序列”为这个序列仅含1且这个序列不拐弯,它可以是横着或者竖着的。请输出最长的“连续的1序列”长度

输入描述:

第一行一个n。
接下来 4*n行,每行4个数。(仅含0,1)。代表n个0/1矩阵。

输出描述:

一个数字表示最长的“连续的1序列”的长度。
示例1

输入

复制

1
1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1

输出

复制

4

说明

良心样例1
示例2

输入

复制

1
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0

输出

复制

0

说明

良心样例2
示例3

输入

复制

3
1 0 1 0
0 0 1 0
1 0 1 0
0 1 0 1 1 0 1 0
0 1 1 1
1 0 1 1
1 1 1 0 1 0 1 1
0 1 0 0
0 1 0 0
0 0 0 1

输出

复制

7

说明

这回是真良心数据

=
 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
#include <cstring>
#include <string>
#include <deque>
#include <set>
#include <queue>
#include <cmath>
#define ll long long
using namespace std;
const int N = 1e5+;
int cnt1[N],cnt2[N];
int a[N][][],b[][];
int l[],r[],u[],d[];
int n;
//0 从左到右,1从右到左 ,2 上 ,3下
int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
for(int j=;j<=;j++){
for(int k=;k<=;k++){
scanf("%d",&b[j][k]);
}
}
for(int j=;j<=;j++){
for(int k=;k<=;k++){//5的目的时为了确定这一行是否都是1
if(!b[j][k]){
a[i][j][]=k-;//第i个矩阵第j行从左到右第1个0之前有a[i][j][0]个1
break;
}
}
}
for(int j=;j<=;j++){
for(int k=;k>=;k--){
if(!b[j][k]){
a[i][j][]=-k;
break;
}
}
}
for(int j=;j<=;j++){
for(int k=;k<=;k++){
if(!b[k][j]){
a[i][j][]=k-; break;
}
}
}
for(int j=;j<=;j++){
for(int k=;k>=;k--){
if(!b[k][j]){
a[i][j][]=-k;
break;
}
}
} }
//横着
int ans = ;
for(int i=;i<=n;i++){
for(int j=;j<=;j++){
if(a[i][j][]==){
cnt1[j]++;
}
else{
if(a[i][j][]>l[j]&&a[i][j][]>r[j]){
if(a[i][j][]>a[i][j][]){//1个矩阵只能放在一个位置
l[j]=a[i][j][];
}
else{
r[j]=a[i][j][];
}
}
else{
l[j]=max(l[j],a[i][j][]);
r[j]=max(r[j],a[i][j][]);
}
}
}
}
for(int i=;i<=;i++){
ans=max(ans,cnt1[i]*+l[i]+r[i]);//后缀1序列+全1序列+前缀1序列
}
//竖着
for(int i=;i<=n;i++){
for(int j=;j<=;j++){
if(a[i][j][]==){
cnt2[j]++;
}
else{
if(a[i][j][]>u[j]&&a[i][j][]>d[j]){
if(a[i][j][]>a[i][j][]){
u[j]=a[i][j][];
}
else{
d[j]=a[i][j][];
}
}
else{
u[j]=max(u[j],a[i][j][]);
d[j]=max(d[j],a[i][j][]);
}
}
}
}
for(int i=;i<=;i++){
ans=max(ans,cnt2[i]*+u[i]+d[i]);
}
printf("%d\n",ans);
return ;
}

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

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

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

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

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

  3. 牛客练习赛29 B 列队

    [题解] 把某一行或某一列有4个1的都统计出来,然后首尾接上尽量长的,注意首尾不能选上同一个矩阵,要维护前缀.后缀1最大值和次大值. 还要注意维护矩阵内连续1的长度,因为可能有 0 0 0 0 这种情 ...

  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. DatabaseMetaData类

    DatabaseMetaData类是java.sql包中的类,利用它可以获取我们连接到的数据库的结构.存储等很多信息.如: 1.数据库与用户,数据库标识符以及函数与存储过程.         2.数据 ...

  2. 关于使用mybatis的分页插件问题

    首先我需要导入架包 1.pagehelper 如果你是在mybatis中配置分页‘ 如下代码 <plugins> <plugin interceptor="com.gith ...

  3. html学习笔记-DOM

    html学习笔记-DOM Table of Contents 1. 什么是 DOM? 2. DOM 节点 3. DOM 方法 4. DOM 属性 5. DOM 访问 6. DOM 修改 7. DOM ...

  4. <Android 应用 之路> 天气预报(二)

    界面组成 载入界面 显示界面 Activity两个,一个用来显示载入界面,一个用来显示天气信息 主要代码如下: public class MyActivity extends Activity { p ...

  5. Android中当item数量超过一定大小RecyclerView高度固定

    Android中当item数量超过一定大小时,将RecyclerView高度固定 方法1 直接通过LayoutParams来设定相应高度 ViewGroup.LayoutParams lp = rv. ...

  6. Mac版 Slickedit 2013 v18.0.3.3 破解

    今天在Windows机器上面,无调试器的情况下,把 Mac系统下的Slickedit给破解了并测试通过. 原始安装包下载: Mac Slickedit 2013 (v18.0.3.3) 破解文件下载地 ...

  7. mysql-单表操作

    mySql单表操作主要有一下内容: 1.查询:查询又分为几种,范围查询,模糊查询.空值查询.多条件查询 查询的语句格式为:SELECT 字段 1,字段 2,字段 3...FROM 表名 WHERE 条 ...

  8. 自定义标签jsp2格式

    在写自定义标签时候是不是感觉很烦啊,其实人家也是这样认为的,于是我们的jsp新的标准对标签进行了更改,使我们用起来更简单.到底哪里简单呢?看看代码再说咯: 还是老规矩,先上一个标签的逻辑类: 1. p ...

  9. LeetCode Min Stack 最小值栈

    题意:实现栈的四个基本功能.要求:在get最小元素值时,复杂度O(1). 思路:链表直接实现.最快竟然还要61ms,醉了. class MinStack { public: MinStack(){ h ...

  10. 【Apache】HTTPD 2.4.37 + OpenSSL 1.1.1 企业级安全配置(含TLS修复)

    我为什么要写这一篇稿子? 为了避免更多的运维.开发者没能实现企业的信息安全,我将共享出我个人的HTTPD的安全修复(2.2和2.4差不太多就看2.4就好) 起因:我为某M工作,但因某M和testin合 ...