zoukankan      html  css  js  c++  java
  • tyvj4866 摆摊

    这分送的真慷慨,我随手打了个莫队,就90了。。。。

    90分代码:

    #include<bits/stdc++.h>
    using namespace std;
    #define MAXN 1000000+10
    struct que{int l,r,id,a1,a2;}qu[MAXN];
    int n,m,siz,q,a[MAXN],pos[MAXN],vis[MAXN];
    bool cmp(que a,que b){return pos[a.l]==pos[b.l]?a.r<b.r:pos[a.l]<pos[b.l];}
    int main(){
        scanf("%d%d%d",&n,&m,&q);
        siz=sqrt(m);
        for(int i=1;i<=m;i++)scanf("%d",&a[i]);
        for(int i=1;i<=q;i++)scanf("%d%d",&qu[i].l,&qu[i].r),qu[i].id=i;
        for(int i=1;i<=m;i++)pos[i]=(i-1)/siz+1;
        sort(qu+1,qu+q+1,cmp);
        for(int i=qu[1].l;i<=qu[1].r;i++)vis[a[i]]++;
        int l=qu[1].l,r=qu[1].r;
        for(int i=1;i<=q;i++){
            while(l<qu[i].l)vis[a[l]]--,l++;
            while(r>qu[i].r)vis[a[r]]--,r--;
            while(l>qu[i].l)l--,vis[a[l]]++;
            while(r<qu[i].r)r++,vis[a[r]]++;
            qu[qu[i].id].a1=-1;
            for(int j=1;j<n;j++)
                if(!vis[j]&&!vis[j+1]){
                    qu[qu[i].id].a1=j;
                    qu[qu[i].id].a2=j+1;
                    break;
                }
        }
        for(int i=1;i<=q;i++)
            if(qu[i].a1==-1)printf("-1
    ");
            else printf("%d %d
    ",qu[i].a1,qu[i].a2);
        return 0;
    }

    主席树正解的坑有空再填

    Hello World
  • 相关阅读:
    Arrays工具类、二维数组
    Idea软件的使用
    循环语句
    方法
    objective-C 2.0
    Unix系统常用命令
    文献管理工具Zotero
    如何降低论文重复率
    SQL易忽视的细节
    数据库系统原理学习资源
  • 原文地址:https://www.cnblogs.com/NINGLONG/p/7563311.html
Copyright © 2011-2022 走看看