传送门

参考资料:

  [1]:官方题解(提取码:t050 )

  [2]:标程(提取码:rvxr )

[3]:牛客题解汇总

A.Equivalent Prefixes(单调栈)

•题意

  定义两个数组 u,v ,并且 u,v 都含有 m 个互不相同的元素;

  如果数组 u,v 任意区间的RMQ(区间最小值)对应的下标都相等,则说这两个数组是 "equivalent";

  先给你包含 n 个不同元素的数组 a,b,求使得 a[1,2,...,p] 与 b[1,2,....,p] 为 "equivalen" 的最大的 p;

•题解

  定义数组 L1,L1[ i ]表示在 a 数组中,以 ai 为区间最小值最左可以到达的位置;

  即 RMQ( L1[ i ], i ) = ai

  定义数组 L2,含义与 L1 相同,作用于数组 b;

  对于位置 i ,找到第一个不满足 L1[i] == L2[ i ] 的位置 i,那么,答案就为 i-1;

•Code

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<stack>
 4 using namespace std;
 5 #define ll long long
 6 const int maxn=1e5+50;
 7
 8 int n;
 9 int a[maxn];
10 int b[maxn];
11 int L1[maxn];
12 int L2[maxn];
13 stack<int >sta;
14
15 void Work(int *a,int *L)
16 {
17     while(!sta.empty())
18         sta.pop();
19     for(int i=1;i <= n;++i)
20     {
21         while(!sta.empty() && a[sta.top()] >= a[i])
22             sta.pop();
23
24         L[i]=sta.empty() ? 1:sta.top()+1;
25         sta.push(i);
26     }
27 }
28 int Solve()
29 {
30     Work(a,L1);
31     Work(b,L2);
32
33     int p=n;
34     for(int i=1;i <= n;++i)
35         if(L1[i] != L2[i])
36         {
37             p=i-1;
38             break;
39         }
40     return p;
41 }
42 int main()
43 {
44     while(~scanf("%d",&n))
45     {
46         for(int i=1;i <= n;++i)
47             scanf("%d",a+i);
48         for(int i=1;i <= n;++i)
49             scanf("%d",b+i);
50
51         printf("%d\n",Solve());
52     }
53     return 0;
54 }

View Code


E.ABBA(DP or 组合数学)

•参考资料

  [1]:唐宋元明清(DP)

  [2]:光芒万丈小太阳(DP)

  [3]:rjmgc丁凯朔(组合数学)(待参考)

•题意

  求包含 n 个 "AB" 和 m 个 "BA" 的总方案数;

题解

  比赛结束当天,查看了参考资料[2]的博文,当时出于似懂非懂的状态;

  今天(2019.7.21)重新看了一下这道题,又看了另一篇博文参考资料[1];

  有种恍然大悟的感觉,但任然欠缺点东西,先记录以下,万一那天顿悟了呢。

  定义 dp[ i ][ j ] 表示当前包含 i 个 'A' 和 j 个 'B' 的合法序列的总方案数;

  如果 i+1 ≤ n+j,转移 : dp[i+1][ j ] += dp[ i ][ j ];

  如果 j+1 ≤ m+i,转移 : dp[ i ][ j+1] += dp[ i ][ j ];

  

  

  这两篇博客对比着理解以下,应该更容易些;(tql)

•Code

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define ll long long
 4 const int MOD=1e9+7;
 5 const int maxn=4e3+50;
 6
 7 int n,m;
 8 ll dp[maxn][maxn];
 9
10 ll Solve()
11 {
12     int s=n+m;
13     for(int i=0;i <= s;++i)
14         for(int j=0;j <= s;++j)
15             dp[i][j]=0;
16     dp[0][0]=1;
17
18     for(int i=0;i <= s;++i)
19     {
20         for(int j=0;j <= s;++j)
21         {
22             if(i+1 <= n+j)
23                 dp[i+1][j]=(dp[i+1][j]+dp[i][j])%MOD;
24             if(j+1 <= m+i)
25                 dp[i][j+1]=(dp[i][j+1]+dp[i][j])%MOD;
26         }
27     }
28     return dp[s][s];
29 }
30 int main()
31 {
32     while(~scanf("%d%d",&n,&m))
33     {
34         printf("%d\n",Solve());
35     }
36     return 0;
37 }

View Code

转载于:https://www.cnblogs.com/violet-acmer/p/11209409.html

2019牛客暑期多校训练营(第一场)相关推荐

  1. 2019牛客暑期多校训练营(第一场场)_I题Points Division(线段树+DP维护区间最大值)

    题目链接: https://ac.nowcoder.com/acm/contest/881/I 题意: 给你n个点,每个点的坐标为(xi,yi),有两个权值ai,bi. 现在要你将它分成A,B两部分, ...

  2. 2019牛客暑期多校训练营(第三场)H.Magic Line

    2019牛客暑期多校训练营(第三场)H.Magic Line 题目链接 题目描述 There are always some problems that seem simple but is diff ...

  3. 2019牛客暑期多校训练营(第五场)C generator 2 (BSGS)

    2019牛客暑期多校训练营(第五场)C generator 2 思路 x0=x0x_0 = x_0x0​=x0​ x1=a∗x0∗bx_1 = a * x_0 * bx1​=a∗x0​∗b x2=a∗ ...

  4. 2019牛客暑期多校训练营(第四场)----E- triples II

    首先发出题目链接: 链接:https://ac.nowcoder.com/acm/contest/884/E 来源:牛客网 涉及:位运算,容斥定义,dp 点击这里回到2019牛客暑期多校训练营解题-目 ...

  5. 【2019牛客暑期多校训练营(第一场) - A】Equivalent Prefixes(单调栈,tricks)

    题干: 链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Two arrays u and v each with m distinct elem ...

  6. 2019牛客暑期多校训练营(第一场)E-ABBA(dp)

    链接:https://ac.nowcoder.com/acm/contest/881/E 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 524288K,其他语言1048 ...

  7. 2019牛客暑期多校训练营(第一场) A Equivalent Prefixes ( st 表 + 二分+分治)

    链接:https://ac.nowcoder.com/acm/contest/881/A 来源:牛客网 Equivalent Prefixes 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/ ...

  8. 【2019牛客暑期多校训练营(第一场) - H】XOR(线性基,期望的线性性)

    题干: 链接:https://ac.nowcoder.com/acm/contest/881/H 来源:牛客网 Bobo has a set A of n integers a1,a2,-,ana1, ...

  9. 2019牛客暑期多校训练营(第一场) Integration(定积分)

    链接:https://ac.nowcoder.com/acm/contest/881/B 来源:牛客网 Bobo knows that  Given n distinct positive integ ...

最新文章

  1. mysql怎么实现事务序列化_一文快速搞懂MySQL InnoDB事务ACID实现原理(转)
  2. EEPROM的操作---SPI接口和I2C接口
  3. Flume 1.7 源码分析(三)程序入口
  4. 前端学习(2324):angular初步使用
  5. Decoder is not a @Sharable handler, so can't be added or removed multiple times
  6. 日立数据系统进一步加强与IBM zHPF大型机合作
  7. Android 系统(182)---Android.mk的用法和基础 amp;amp; m、mm、mmm编译命令
  8. 编程利器 Beyond Compare 的使用
  9. python-scrapy框架学习笔记
  10. java在数组里面添加_java – 如何在数组中间添加?
  11. The processing instruction target matching [xX][mM][lL] is not allowed
  12. 微信小程序制作表格代码
  13. 5V升压充电12.6V锂电池方案
  14. 基础知识之存活探针(Liveness Probe)
  15. IT领域的罗马帝国——微软公司
  16. [面试经验]一汽大众旗下车联网公司摩斯智联面试记
  17. 数据挖掘简介(摘自维基百科)
  18. java ctr_分组密码_计数器(CTR)模式_原理及java实现
  19. 用户数据为什么那么大_为什么那么多用户声讨高德地图?
  20. 软考高级系统架构设计师:论面向服务的架构及其应用

热门文章

  1. PIC单片机实现二进制码与压缩BCD码的相互转换
  2. Altium Designer2022相关操作
  3. 对设计的思考(追求16bit分辨率系统的精度)
  4. PHP识别二维码技术(php-zbarcode)
  5. LYSoft站点改版
  6. GNU Radio3.8创建OOT的详细过程(进阶/C++)
  7. mysql数据库参考文献2018_2018-4-25mysql数据库基础
  8. EasyExcel导出有下拉框的模板
  9. Doxygen GUI 词汇
  10. 贾扬清 李大海 talk in AI