zoukankan      html  css  js  c++  java
  • codeforces 622c Not Equal on a Segment

    询问区间内不等于某个指定数的任意一个数的下标。

    可以用数据结构来降低复杂度,不过我没有成功,题解提供了一种非常专业的思路:

    数组 p 中的元素 p[ i ] 表示 a[ i ] 的左边的第一个不等于 a[ i ]的元素的下标

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<vector>
    #include<queue>
    #include<map>
    #include<set>
    #include<unordered_map>
    #define DEBUG(x) cout<<#x<<" = "<<x<<endl
    using namespace std;
    const int MAXN=2e5+10;
    int n,m;
    int a[MAXN];
    int p[MAXN];
    int main()
    {
    //    freopen("in.txt","r",stdin);
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
        }
        ///p表示从a[i]开始第一个不等于a[i]的值的位置
        for(int i=2;i<=n;i++){
            if(a[i]==a[i-1])p[i]=p[i-1];
            else p[i]=i-1;
        }
        while(m--){
            int l,r,x;
            scanf("%d%d%d",&l,&r,&x);
            int ans;
            if(a[r]!=x)ans=r;
            else {
                if(p[r]<l)ans=-1;
                else ans=p[r];
            }
            printf("%d
    ",ans);
        }
    }
  • 相关阅读:
    CSS margin合并
    最大网络流
    js——this
    js——作用域和闭包
    CSS弹性(flexible)盒子
    CSS盒子模型
    修改html中button显示的文字
    远程唤醒UP Board
    UP Board 串口使用心得
    UP Board 网络设置一本通
  • 原文地址:https://www.cnblogs.com/MalcolmMeng/p/9778781.html
Copyright © 2011-2022 走看看