第一场

E题:ABBA (类 卡特兰数)

Bobo有一个长度为2(n + m)的字符串,由字符“A”和“B”组成。该字符串还具有迷人的特性:它可以分解为(n+ m)个长度为2的子序列,并且在(n+ m)个子序列中,它们中的n个子序列为“AB”,而其他m个为“BA”。

Q:现在给出n 和m ,请问你,最多能找到多少个满足上述条件的串?

理解题意:题目中,分解为“子序列”,而非“子串”;就是说这个长度为2的子序列可以是不连续的。如BBABAA,这个串中有3个‘BA’。

第二场

H题:Second Large Rectangle(次大全1矩阵)

Q:给出一个N x M 的二进制矩阵,请输出第二大的全部由1构成的矩形的面积大小。

A:算出每个位置连续1的二维矩阵,单调栈。(补题:丁得宝)

 1 #include<map>
 2 #include<cmath>
 3 #include<string>
 4 #include<cstdio>
 5 #include<cstring>
 6 #include<iostream>
 7 #include<algorithm>
 8 #define inf 0x3f3f3f3f
 9 using namespace std;
10 const int maxn = 1e3+5;
11 int sum[maxn][maxn],Stack[maxn],n,m;
12 int main()
13 {
14     string s;
15     while(~scanf("%d%d", &n, &m))
16     {
17         memset(sum,0,sizeof(m));
18         for(int i=1; i<=n; i++)
19         {
20             cin>>s;
21             for(int j=0; j<m; j++)
22             {
23                 if(s[j]=='0') sum[i][j+1]=0;
24                 else sum[i][j+1]=sum[i][j]+1;
25             }
26         }
27         int m1=0,m2=0;
28         Stack[0]=0;
29         for(int j=m; j>0; j--)
30         {
31             int top=0;
32             Stack[0]=0;
33             for(int i=1; i<=n; i++)
34             {
35                 if(sum[i][j]>=sum[Stack[top]][j])
36                     Stack[++top]=i;
37                 else
38                 {
39                     int len;
40                     while(sum[i][j]<sum[Stack[top]][j])
41                     {
42                         len=i-Stack[top-1]-1;
43                         int s=sum[Stack[top]][j]*len;
44                         if(s>m1)
45                         {
46                             m2=max(m1,sum[Stack[top]][j]*(len-1));
47                             m1=s;
48                         }
49                         else if(s==m1)
50                             m2=m1;
51                         else if(s>m2)
52                             m2=s;
53                         top--;
54                     }
55                     Stack[++top]=i;
56                 }
57             }
58             for(int i=1; i<=top; i++)
59             {
60                 int s=sum[Stack[i]][j]*(Stack[top]-Stack[i-1]);
61                 if(s>m1)
62                 {
63                     m2=max(m1,sum[Stack[i]][j]*(Stack[top]-Stack[i-1]-1));
64                     m1=s;
65                 }
66                 else if(s==m1)
67                     m2=m1;
68                 else if(s>m2)
69                     m2=s;
70             }
71         }
72         printf("%d\n",m2);
73     }
74     return 0;
75 }

View Code

F题:Partition problem

Q:给你 2*N 个人,每两个人之间都有一个竞争价值,所有人之间的竞争价值由二维数组表述出来。现在,让你将这些人分为2队,每队N 人,两队展开竞争;求能产生的最大竞争价值为多少?

理解题意:2*N 个人分成两队,同一队内的队友之间不产生竞争价值;一个队的一名成员,与另一队的每个成员之间都会计算一次竞争价值。

转载于:https://www.cnblogs.com/Amaris-diana/p/11223337.html

2019暑假牛客训练赛(补题及笔记)相关推荐

  1. 林大5.1训练赛补题

    林大5.1训练赛补题 A.凸多边形曼哈顿 E.矩阵快速幂 I.线段dp A.凸多边形曼哈顿 题意:给你一个凸多边形,问你当其中K边形的最大dis[]是多少? 思路:首先是要发现K>=4的时候答案 ...

  2. 2020 牛客暑期训练营补题(第一场)

    暑假还是不能摸鱼了,尽量每天补一道题. 这里大部分的补题应该都是参考了大佬的题解,所以如果有大佬看到了自己的解法,请多多包涵. 第一场 A题 题目描述 题目思路 代码 F题 I题 J题 A题 题目描述 ...

  3. 寒假的牛客训练赛1补题

    寒假我太摸鱼了 牛牛最近做了这么一道题: "对于一给定的 n(1≤n≤109)n(1\leq n\leq 10^{9})n(1≤n≤109),计算ϕ(n)\phi(n)ϕ(n), 之中 ϕ( ...

  4. 2019暑假牛客多校赛第九场H.Cutting Bamboos (主席树+二分)

    题意: 有n条柱子,高度为aia_iai​ ,我们有qqq次操作.在l到r的范围内砍yyy次,将所有的树高都砍为0,但是保证每一刀砍出来的长度(砍除树高于该高度的和)都是相同的.问你第xxx次砍的时候 ...

  5. 1.23山师训练赛补题

    文章目录 C - [The__Flash]的电影 D - [The__Flash]的排序 K - [The__Flash]的牛牛 L - [The__Flash]的鲨鲨 C - [The__Flash ...

  6. 10.23训练赛补题

    A.P1551 亲戚 思路:并查集 AC代码: (并查集暂时不会) #include<iostream> using namespace std; int n, m, p, a[5005] ...

  7. 牛客多校补题专场 Monotonic Matrix LGV定理

    https://ac.nowcoder.com/acm/contest/139/A 题意:给定n∗m的矩阵,矩阵的每一个元素<=下方的元素并且<=右边的元素,每个元素只能取(0,1,2), ...

  8. 2019暑假牛客第5场-F.maximum clique 1-最大独立集(输出方案)

    题面: 思路: 建图方法若两个数有且仅有一个位不同,那么连边(从左边指向右边). 根据某个数的二进制表达式中有奇数个1还是偶数个1,分成左边和右边. 对于二分图,跑匈牙利求最大匹配,最大独立集=节点数 ...

  9. 牛客月赛 44 补题题解

    目录 A-深渊水妖 B-顽皮恶魔 C-绝命沙虫 D-丛林木马 E-变异蛮牛 F-幽暗统领 总结 大佬题解 记录第二次比赛的题解 没想到学了一年半算法之后,还有一场比赛会爆0,打击很大,继续努力 比赛传 ...

  10. 牛客训练赛10 B栈和排序(栈)

    题目大意: 给你一个1->n的排列和一个栈,入栈顺序给定 你要在不打乱入栈顺序的情况下,对数组进行从大到小排序 当无法完全排序时,请输出字典序最大的出栈序列 因为要按照字典序输出,直接做一遍循环 ...

最新文章

  1. 一、ExtMail Solution概述--EXTMAIL
  2. Linux CentOS 7【修改 屏幕(分辨率)大小】
  3. python像素处理_Python+OpenCV图像处理(五)—— 像素运算
  4. 异常:com.microsoft.sqlserver.jdbc.SQLServerException: 将截断字符串或二进制数据。
  5. php全局cors,PHP开启CORS - slagga的个人页面 - OSCHINA - 中文开源技术交流社区
  6. Dropbox推独立应用,公司估值已达100亿美元
  7. Kylin修改默认hbase namespace命名空间default的解决方案
  8. 汇编:用户登录以及简单数据加密
  9. Python XML解析
  10. docker 远程访问_Docker 与其守护进程
  11. SQL Server 中的 JSON 数据
  12. Java中null和浮点数相乘_jvm规范之浮点数 - 你知道吗,有个数字它和自身不相等...
  13. python基础之centos7源码安装python3
  14. Photoshop cc2015基础课笔记
  15. html5游戏网页代码大全,HTML网页代码大全
  16. 工业镜头的主要参数与选型
  17. VLAN隔离葵花宝典(一)
  18. hive reduce
  19. 一款拥有漂亮外表的Typecho简洁主题-Scarfskin
  20. win10更改桌面、文档、图片的存储位置

热门文章

  1. Android5.0系统下代码格式化sd卡方法
  2. 计算机速算训练,世界上最快的速算法,背熟就是速算神童,大脑堪比计算机!仅发一次...
  3. 14行Python代码,让AI和AI无限聊天,他们会聊出什么
  4. php implode key,PHP implode()用法及代碼示例
  5. 手写一个博客平台 ~ 第六天
  6. 前言,flutter页面切换动画
  7. Premiere Pro CC 2018 经典教程
  8. 戴尔-卡耐基:《人性的优点 How to stop worrying and start living》
  9. Android waitting for debugger
  10. [LLVM]LLVM入门 ---llvm 代码结构