zoukankan      html  css  js  c++  java
  • 莫队算法模板

     1 #include <bits/stdc++.h>
     2 
     3 using namespace std;
     4 const int N = 1<<20;
     5 struct node
     6 {
     7     int l,r,id;
     8 }Q[N];
     9 
    10 int ans[N];
    11 long long answer[N];
    12 long long flag[N];
    13 int a[N];
    14 bool cmp(node x,node y)
    15 {
    16     if(ans[x.l]==ans[y.l])
    17         return x.r<y.r;
    18     return ans[x.l]<ans[y.l];
    19 }
    20 int n,m,k;
    21 int L = 1,R = 0;
    22 long long Ans= 0;
    23 void add(int x)
    24 {
    25     Ans+=flag[a[x]^k];
    26     flag[a[x]]++;
    27 }
    28 void del(int x)
    29 {
    30     flag[a[x]]--;
    31     Ans-=flag[a[x]^k];
    32 }
    33 int main()
    34 {
    35 
    36     scanf("%d%d%d",&n,&m,&k);
    37     int sz = sqrt(n);
    38     for(int i = 1; i <= n; i++){
    39         scanf("%d",&a[i]);
    40         a[i] = a[i-1]^a[i];
    41         ans[i] = i/sz;
    42     }
    43     flag[0] = 1;
    44     for(int i = 1; i <= m; i++)
    45     {
    46         scanf("%d%d",&Q[i].l,&Q[i].r);
    47         Q[i].id = i;
    48     }
    49     sort(Q+1,Q+m+1,cmp);
    50     for(int i = 1; i <= m; i++)
    51     {
    52         while(L<Q[i].l)
    53         {
    54             del(L-1);
    55             L++;
    56         }
    57         while(L>Q[i].l)
    58         {
    59             L--;
    60             add(L-1);
    61         }
    62         while(R<Q[i].r)
    63         {
    64             R++;
    65             add(R);
    66         }
    67         while(R>Q[i].r)
    68         {
    69             del(R);
    70             R--;
    71         }
    72         answer[Q[i].id] = Ans;
    73     }
    74     for(int i = 1; i <= m; i++)
    75     {
    76         printf("%lld
    ",answer[i]);
    77     }
    78     return 0;
    79 }
  • 相关阅读:
    反射
    jQuery之Dom操作
    Jquery学习开篇
    c#构造函数
    c#之委托
    DataX启动步骤解析
    JobContainer
    DataX 启动配置
    DataX源码分析(2)
    DataX源码分析(1)
  • 原文地址:https://www.cnblogs.com/--lr/p/9409871.html
Copyright © 2011-2022 走看看