zoukankan      html  css  js  c++  java
  • 2019 牛客暑期多校训练营(第一场)

    题目链接:A  Equivalent Prefixes

    解题思路

      单调栈

      我们可以利用单调栈对输入的两个数组进行一下操作:找到比当前数字小的元素,将找到的元素的下标储存起来;

      比较两个数组,如果有不一样的,则记录答案,break;

    代码如下

     1 #include<iostream>
     2 using namespace std;
     3 const int N = 100000 + 10;
     4 struct node{
     5     int inx, val;
     6 }st[N];
     7 int n;
     8 int a[N], b[N], r1[N], r2[N];
     9 void change(int* temp, int* ans){
    10     int top = 0;
    11     st[0] = {0, 0};
    12     for(int i = 1; i <= n; i++){
    13         while(top && st[top].val >= temp[i])    --top;
    14         ans[i] = st[top].inx;
    15         st[++top] = node{i, temp[i]};
    16     }
    17 }
    18 int main(){
    19     while(~scanf("%d", &n)){
    20         int ans = n;
    21         for(int i = 1; i <= n; i++)    scanf("%d", &a[i]);
    22         for(int i = 1; i <= n; i++)    scanf("%d", &b[i]);
    23         change(a, r1);    change(b, r2);
    24         for(int i = 1; i <= n; i++){
    25             if(r1[i] != r2[i]){
    26                 ans = i - 1;
    27                 break;
    28             }
    29         }
    30         printf("%d
    ", ans);
    31     }
    32     return 0;
    33 }
    Equivalent Prefixes

    参考

    2019牛客多校第一场补题笔记

  • 相关阅读:
    OC
    OC
    核心动画
    核心动画
    核心动画
    数据存储1
    plsql语句基础
    Oracle3连接&子查询&联合查询&分析函数
    oracle2约束添加&表复制&拼接
    Oracle表空间创建及表创建
  • 原文地址:https://www.cnblogs.com/zoom1109/p/11216085.html
Copyright © 2011-2022 走看看