zoukankan      html  css  js  c++  java
  • bzoj 1878

    这题的做法有点神奇。。

    离线处理。按r排序,记录上个相同的数出现的位置,边加入一个数的同时删去上一个相同的数就好了。。用BIY维护和

    BIT写起来挺快的。。

     1 //#include<bits/stdc++.h>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<queue>
     6 #include<iostream>
     7 #define inc(i,l,r) for(int i=l;i<=r;i++)
     8 #define dec(i,l,r) for(int i=l;i>=r;i--)
     9 #define link(x) for(edge *j=h[x];j;j=j->next)
    10 #define mem(a) memset(a,0,sizeof(a))
    11 #define ll long long
    12 #define succ(x) (1<<x)
    13 #define lowbit(x) (x&(-x))
    14 #define NM 1000000+5
    15 using namespace std;
    16 int read(){
    17     int x=0,f=1;char ch=getchar();
    18     while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
    19     while(isdigit(ch))x=x*10+ch-'0',ch=getchar();
    20     return x*f;
    21 }
    22 int t=1,n,m,tmp[NM],h[NM],next[NM],ans[NM],l[NM],r[NM],_x,a[NM];
    23 bool cmp(int x,int y){
    24     return r[x]<r[y];
    25 }
    26 void upd(int x,int t){
    27     for(;x<=n;x+=lowbit(x))a[x]+=t;
    28 }
    29 int sum(int x){
    30     int s=0;
    31     for(;x;x-=lowbit(x))s+=a[x];
    32     return s;
    33 }
    34 int main(){
    35     freopen("data.in","r",stdin);
    36     n=read();
    37     inc(i,1,n){
    38         _x=read();next[i]=h[_x];h[_x]=i;
    39     }
    40     m=read();
    41     inc(i,1,m){
    42         l[i]=read();r[i]=read();tmp[i]=i;
    43     }
    44     sort(tmp+1,tmp+m+1,cmp);
    45     inc(i,1,m){
    46         for(;t<=r[tmp[i]];t++){
    47             if(next[t])upd(next[t],-1);upd(t,1);
    48         }
    49         ans[tmp[i]]=sum(r[tmp[i]])-sum(l[tmp[i]]-1);
    50     }
    51     inc(i,1,m)printf("%d
    ",ans[i]);
    52     return 0;
    53 }
    View Code
  • 相关阅读:
    计算机基础
    POJO(PO)与javaBean的比较、以及DTO的说明
    Spring Assert(方法入参检测工具类-断言)
    Extjs tree的相关方法及配置项
    spring aop两种配置方式(1)
    Oracle存储过程中临时表的使用技巧
    文件上传
    java中的IO操作总结
    ExtJs文件上传(Ext.ux.form.FileUploadField)
    Extjs 属性控件[转载]
  • 原文地址:https://www.cnblogs.com/onlyRP/p/5187278.html
Copyright © 2011-2022 走看看