zoukankan      html  css  js  c++  java
  • AtCoder Regular Contest 098 D

    题意:给出n个数,求它的连续子序列中,满足下列公式,(l,r)的对数有多少对

    Al xor Al+1 xor … xor Ar=Al Al+1 + … Ar

    思路:由题意可以得到,连续子序列,如果在ai这个数不符合公式的话,即之后的符合条件的对数中将不在需要这个元素,所有枚举元素来计算符合公式的对数 。

    难以理解的就是异或等效于加法与减法(!!!)

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 #define ll long long
     4 #define N 200005
     5 
     6 ll he[N],yi[N];
     7 
     8 int main()
     9 {
    10     ll n,i,x,l,r,ans;
    11 
    12     while (scanf("%lld",&n)!=EOF)
    13     {
    14         for (i=1;i<=n;i++)
    15         {
    16             scanf("%lld",&x);
    17             he[i]=he[i-1]+x;//计算加法前缀和 
    18             yi[i]=yi[i-1]^x;//计算异或前缀和 
    19         }
    20 
    21         l=1;//左端点 
    22         ans=0;
    23 
    24         for (r=1;r<=n;r++)//以第r个数为结尾进行遍历 
    25         {
    26             for (;he[r]-he[l-1]!=(yi[r]^yi[l-1]);l++); //b到c的异或和=a到c的异或和 异或 a到b的异或和(可以证明)
    27                 ans+=r-l+1;//l到r的串中共有长度个情况(1个数组成,2个数组成。。。) 
    28         }
    29         
    30         printf("%lld
    ",ans);
    31         return 0;
    32     }
    33 
    34     return 0;
    35 }
  • 相关阅读:
    linux scull 函数open 方法
    linux scull 中的设备注册
    linux 字符设备注册
    linux inode 结构
    linux设备驱动文件结构
    linux一些重要数据结构
    Python3.2官方文档翻译--输出格式化
    1021. Deepest Root (25)
    hdu 4779 Tower Defense (思维+组合数学)
    cookie是什么? -- web
  • 原文地址:https://www.cnblogs.com/hemeiwolong/p/9130384.html
Copyright © 2011-2022 走看看