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

    C. Not Equal on a Segment
    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output

    You are given array a with n integers and m queries. The i-th query is given with three integers li, ri, xi.

    For the i-th query find any position pi (li ≤ pi ≤ ri) so that api ≠ xi.

    Input

    The first line contains two integers n, m (1 ≤ n, m ≤ 2·105) — the number of elements in a and the number of queries.

    The second line contains n integers ai (1 ≤ ai ≤ 106) — the elements of the array a.

    Each of the next m lines contains three integers li, ri, xi (1 ≤ li ≤ ri ≤ n, 1 ≤ xi ≤ 106) — the parameters of the i-th query.

    Output

    Print m lines. On the i-th line print integer pi — the position of any number not equal to xi in segment [li, ri] or the value  - 1 if there is no such number.

    Sample test(s)
    input
    6 4
    1 2 1 1 3 5
    1 4 1
    2 6 2
    3 4 1
    3 4 2
    output
    2
    6
    -1
    4

     题意:给你一个数组,然后m条询问,在l[i]到r[i]之间是否存在一个数不等于x[i],存在输出这个数的位置,不然输出-1;

     思路:开一个fa数组,记录与这个数一直不间断相同的数的位置,相当于把相同的数合并,在查找的时候就省事了,开始直接暴力是过不了的;

     AC代码:

    #include <bits/stdc++.h>
    using namespace std;
    const int N=1e6+5;
    int n,m,a[N],fa[N],l,r,x;
    int solve(int le,int ri,int ans)
    {
    int fx;
    for(int i=le;i<=ri;)
    {
    if(fa[i]<=ri)fx=fa[i];
    else fx=ri;
    if(a[fx]!=ans)return fx;
    i=fx+1;
    }
    return -1;
    }
    int main()
    {
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++)
    {
    scanf("%d",&a[i]);
    }
    fa[n]=n;
    for(int i=n-1;i>0;i--)
    {
    if(a[i]==a[i+1])fa[i]=fa[i+1];
    else fa[i]=i;
    }
    while(m--)
    {
    scanf("%d%d%d",&l,&r,&x);
    printf("%d ",solve(l,r,x));
    }
    return 0;
    }

  • 相关阅读:
    C# Linq 交集、并集、差集、去重
    SpringICO和DI区别
    postman调用webapi错误记录
    NetCore实例提供的依赖注入的生命周期
    ios处理暴力输出问题
    一块国外开源的视频播发器
    一个有创意的3D APP
    Flurry Analytics最近免费添加了获取新用户分析和app崩溃报告的功能
    那些域名服务商
    Moneybookers的优点
  • 原文地址:https://www.cnblogs.com/zhangchengc919/p/5186388.html
Copyright © 2011-2022 走看看