牛客练习赛29 B

输入描述:
- 第一行一个n。
接下来 4*n行,每行4个数。(仅含0,1)。代表n个0/1矩阵。
输出描述:
- 一个数字表示最长的“连续的1序列”的长度。
说明
- 这回是真良心数据
- =
- #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的更多相关文章
- 牛客练习赛 29 E 位运算?位运算!(线段树)
题目链接 牛客练习赛29E 对$20$位分别建立线段树.首先$1$和$2$可以合起来搞(左移右移其实是等效的) 用个lazy标记下.转移的时候加个中间变量. $3$和$4$其实就是区间$01$覆盖操 ...
- 牛客练习赛29 F 算式子
https://www.nowcoder.com/acm/contest/211/F 经典题. 1.分区间 2.向下取整的值变化 & 合并相同值 #include <bits/stdc+ ...
- 牛客练习赛29 B 列队
[题解] 把某一行或某一列有4个1的都统计出来,然后首尾接上尽量长的,注意首尾不能选上同一个矩阵,要维护前缀.后缀1最大值和次大值. 还要注意维护矩阵内连续1的长度,因为可能有 0 0 0 0 这种情 ...
- 【并查集缩点+tarjan无向图求桥】Where are you @牛客练习赛32 D
目录 [并查集缩点+tarjan无向图求桥]Where are you @牛客练习赛32 D PROBLEM SOLUTION CODE [并查集缩点+tarjan无向图求桥]Where are yo ...
- 牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 逻辑,博弈 B
牛客练习赛31 B 赞迪卡之声妮莎与奥札奇 https://ac.nowcoder.com/acm/contest/218/B 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 2621 ...
- 牛客练习赛31 D 神器大师泰兹瑞与威穆 STL,模拟 A
牛客练习赛31 D 神器大师泰兹瑞与威穆 https://ac.nowcoder.com/acm/contest/218/D 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 26214 ...
- 最小生成树--牛客练习赛43-C
牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...
- 牛客练习赛28-B(线段树,区间更新)
牛客练习赛28 - B 传送门 题目 qn姐姐最好了~ qn姐姐给你了一个长度为n的序列还有m次操作让你玩, 1 l r 询问区间[l,r]内的元素和 2 l r 询问区间[l,r]内的 ...
- 牛客练习赛26:D-xor序列(线性基)
链接:牛客练习赛26:D-xor序列(线性基) 题意:小a有n个数,他提出了一个很有意思的问题:他想知道对于任意的x, y,能否将x与这n个数中的任意多个数异或任意多次后变为y 题解:线性基 #inc ...
随机推荐
- github新手指南
- Nuxt使用记录
代码及插件需要根据环境引入 (服务端没有window,document,浏览器端没有global) const myPlugins = { install(Vue, options) { Vue.pr ...
- oo总结
架构设计 第一次作业 需求分析 这次作业是针对类中的一些元素,如属性,操作,继承,实现等查询,所以这次的架构我们的第一感觉,按照正常的结构在类中存属性操作,继承的父类和实现的接口等. 具体功能 为了实 ...
- form-data、x-www-form-urlencoded、raw、binary的区别
1.form-data: 就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开.既可以上传键值对,也可以上传文件.当上传的字段是文件时 ...
- Log Structured Merge Trees(LSM) 算法
十年前,谷歌发表了 “BigTable” 的论文,论文中很多很酷的方面之一就是它所使用的文件组织方式,这个方法更一般的名字叫 Log Structured-Merge Tree. LSM是当前被用在许 ...
- Redis数据库1
一.启动服务 #进入redis安装文件夹 cd /usr/local/redis/ #开启服务端(后端开启) ./bin/redis-server ./redis.conf #开启客户端 ./bin/ ...
- Map-HashMap-LinkedHashMap-Map.Entry-Collections-可变参数
一.Map 接口(java.util) 定义:public interface Map<K,V> 介绍: (1)Map是一个接口,含有两个泛型,创建子类对象的时候,需要传递两个泛型 ...
- zabbix2升级zabbix3
1.停服zabbix2,停服数据库/etc/init.d/zabbix_server stop/etc/init.d/mysqld stop 2.物理备份数据库cd /var/lib/mysql/ta ...
- javascript简单计算器实践
参考部分资料,编写一个简单的计算器案例,虽然完成了正常需求,但是也有不满之处,待后续实力提升后再来补充,先把不足之处列出: 1:本来打算只要打开页面,计算器的输入框会显示一个默认为0的状态,但是在输入 ...
- 获取元素Bytagname区别/for循环应用
一:两种获取元素方式的区别.1.var aLi = oUl.getElementsByTagName('li');TagName前面可以加其他东西,id就只能是document,2,Id是静态的,ta ...