zoukankan      html  css  js  c++  java
  • XOR and Favorite Number Codeforces

    https://www.luogu.org/problemnew/show/P4462

    http://codeforces.com/problemset/problem/617/E

    这个是莫队裸题了吧。。。

    然而,注意:

    1.答案开longlong

    2.要用桶来代替map/unordered_map,不然会T;桶的大小要大于两倍值域(这是较松的上限,实际上限就是值域内两个数异或能得到的最大值,大概就是值域转换成二进制后每一位变成1后再转回十进制得到的值吧)

    CF

     1 #include<cstdio>
     2 #include<algorithm>
     3 #include<cmath>
     4 using namespace std;
     5 typedef long long LL;
     6 int sum[100100];
     7 int l=1,r=0,blo,n,m,k;LL ans;
     8 int s1[2000100],s2[2000100];
     9 struct Q
    10 {
    11     int l,r,num;LL ans;
    12 }q[100100];
    13 bool operator<(const Q &a,const Q &b)
    14 {
    15     return ((a.l-1)/blo==(b.l-1)/blo)?a.r<b.r:a.l<b.l;
    16 }
    17 bool cmp(const Q &a,const Q &b)
    18 {
    19     return a.num<b.num;
    20 }
    21 void addR()
    22 {
    23     ++r;
    24     s1[sum[r-1]]++;s2[sum[r]]++;
    25     ans+=s1[sum[r]^k];
    26 }
    27 void delR()
    28 {
    29     ans-=s1[sum[r]^k];
    30     s1[sum[r-1]]--;
    31     s2[sum[r]]--;
    32     --r;
    33 }
    34 void addL()
    35 {
    36     --l;
    37     s1[sum[l-1]]++;s2[sum[l]]++;
    38     ans+=s2[sum[l-1]^k];
    39 }
    40 void delL()
    41 {
    42     ans-=s2[sum[l-1]^k];
    43     s1[sum[l-1]]--;
    44     s2[sum[l]]--;
    45     ++l;
    46 }
    47 int main()
    48 {
    49     int i;
    50     scanf("%d%d%d",&n,&m,&k);blo=sqrt(n+0.5);
    51     for(i=1;i<=n;i++)    scanf("%d",&sum[i]),sum[i]^=sum[i-1];
    52     for(i=1;i<=m;i++)    scanf("%d%d",&q[i].l,&q[i].r),q[i].num=i;
    53     sort(q+1,q+m+1);
    54     for(i=1;i<=m;i++)
    55     {
    56         //printf("%d %d
    ",q[i].l,q[i].r);
    57         while(r<q[i].r)    addR();
    58         while(l>q[i].l)    addL();
    59         while(r>q[i].r)    delR();
    60         while(l<q[i].l)    delL();
    61         q[i].ans=ans;
    62     }
    63     sort(q+1,q+m+1,cmp);
    64     for(i=1;i<=m;i++)    printf("%lld
    ",q[i].ans);
    65     return 0;
    66 }
  • 相关阅读:
    B-树与B+树
    RPC原理
    高可用
    Srpingboot与dubbo整合的三种方式
    html
    SQL5
    SQL4
    SQL3
    SQL2
    SQL语句1
  • 原文地址:https://www.cnblogs.com/hehe54321/p/9010200.html
Copyright © 2011-2022 走看看