题意略。

思路:为了更好地求出一段连续数字的异或和,我们可以用前缀异或和来维护,现在我们只需要考虑每一个在数组中的数字向前异或,且在指定范围内,

异或值为全1的个数有多少个。算出每一个位子能做出的贡献,最后相加就可以了。

比如说现在的前缀xorsum = 1010,我们只需要知道在当前位置之前有多少个地方的xorsum值是0101,xor操作后,我们就可以得到这一段的异或值,

且长度要满足题意。

我们如果能记录下当前位子之前所有xorsum = 0101的下标就好了,最好还是有序的,这样就可以用二分查找来优化了。

这个可以用map<LL,vector<int> > 来做到。

我们一边计算,一边维护。

详见代码:

#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<string.h>
#include<map>
#include<vector>
#define maxn 300005
using namespace std;
typedef long long LL; map<LL,vector<int> > mp;
int n,m,a,b;
char str[];
LL store[maxn];
const LL one = ; LL getans(LL tar,int idx){
vector<int>& v = mp[tar];
int up = idx - a;
int down = idx - b;
down = lower_bound(v.begin(),v.end(),down) - v.begin();
up = upper_bound(v.begin(),v.end(),up) - v.begin();
return LL(up - down);
} int main(){
int cas = ;
while(scanf("%d%d%d%d",&n,&m,&a,&b) == ){
mp.clear();
for(int i = ;i < m;++i){
scanf("%s",str);
LL s = ;
for(int j = n - ,k = ;j >= ;--j,++k){
s += LL(str[j] - '')<<(LL)k;
}
store[i + ] = s;
}
LL total = (one<<n) - one;
LL sum = ;
LL ans = ;
mp[sum].push_back();
for(int i = ;i <= m;++i){
sum = sum ^ store[i];
LL other = total ^ sum;
ans += getans(other,i);
mp[sum].push_back(i);
}
printf("Case %d: %lld\n",cas++,ans);
}
return ;
}

CSU1784的更多相关文章

随机推荐

  1. 在vue中创建自定义指令

    原文:https://dev.to/ratracegrad/creating-custom-directives-in-vue-58hh 翻译:心上有杨 指令是带有 v- 前缀的特殊属性.指令的作用是 ...

  2. mysql添加外键失败解决方案

    mysql重启命令: [root@wshCentOS centOS7Share]# service mysqld stopRedirecting to /bin/systemctl stop  mys ...

  3. ~~面向对象进阶——__name__=="__main__"~~

    进击のpython 面向对象进阶--__name__=="__main__" 前面我们在讲模块的时候,其实还有一个知识点没有很好的讲 那就是main和name 可能你们在看一些代码 ...

  4. python语言快捷注释

    1.注释单行 (1)方法1:直接在单行代码前边加 # (2)方法2:选中需要注释的代码,Ctrl+/ 即可注释 2.注释多行代码 选中想要注释的N行代码,直接Ctrl+/ 即可注释 3.取消注释多行代 ...

  5. TIJ读书笔记-第21章-并发

    一本Think in java,从去年6月份开始读,读了快一年了,也快读完了,然而回头想想,却好像什么也不记得了,好记性不如烂笔头,那就从现在开始记录一下吧.由于现在在读的是并发,那就先从这章开始吧. ...

  6. ASP.NET Core on K8S深入学习(1)K8S基础知识与集群搭建

    在上一个小系列文章<ASP.NET Core on K8S学习初探>中,通过在Windows上通过Docker for Windows搭建了一个单节点的K8S环境,并初步尝试将ASP.NE ...

  7. Asp.Net MVC SingleServiceResolver类剖析

    SingleServiceResolver一般用于类工厂创建和注入点接口留白.类工厂创建比如Controller控制依赖于此类的创建,注入点留白实质上是依赖注入所对外预留的接口. 以第二个特性为例. ...

  8. 【有容云干货-容器系列】Kubernetes调度核心解密:从Google Borg说起

    在之前“容器生态圈脑图大放送”文章中我们根据容器生态圈脑图,从下至上从左至右,依次介绍了容器生态圈中8个组件,其中也提到Kubernetes ,是一个以 Google Borg 为原型的开源项目.可实 ...

  9. S2:log4j

    配置步骤 1.引入jar,放到lib中,jar包被项目管理 2.在src目录下copy了一个文件log4j.properties 3.使用Logger   String word="会员登记 ...

  10. mac下安装mongodb数据库教程

    前言 由于最近在学习node+express,学习到持久化存储章节需要连接mongodb数据库,然后之前也有试过安装mongodb但是失败了,这次就找了很多资料,终于安装完成了,故此记录下来安装步骤, ...