wannafly4 挑战杯 B.小AA的数列(区间异或和)
来源:互联网 发布:软件设计师证书有效期 编辑:程序博客网 时间:2024/04/28 06:57
#include<bits/stdc++.h>using namespace std;typedef long long LL;const LL mod=1e9+7;int a[100005];int xorsum[100005];int dp[2][2];//i为下标奇偶,j为在此位前缀和有多少个奇数1int odd[100005];int n,L,R;LL getans(int x){ LL ans=0; for(int i=0;i<31;i++) { LL temp=0; dp[1][0]=dp[1][1]=dp[0][1]=0; dp[0][0]=1; odd[0]=0; for(int j=1;j<=n;j++) if(xorsum[j]&(1ll<<i)) odd[j]=1; else odd[j]=0; for(int j=1;j<=n;j++) { if(j>x) dp[(j-x-1)&1][odd[j-x-1]]--; temp+=dp[j&1][!odd[j]]; dp[j&1][odd[j]]++; } cout<<temp<<endl; ans=(ans+temp*(1ll<<i)%mod)%mod; } return ans;}int main(){ scanf("%d%d%d",&n,&L,&R); for(int i=1;i<=n;i++) scanf("%d",&a[i]); for(int i=1;i<=n;i++) xorsum[i]=a[i]^xorsum[i-1]; printf("%lld\n",(getans(R)-getans(L-1)+mod)%mod); return 0;}
阅读全文
0 0
- wannafly4 挑战杯 B.小AA的数列(区间异或和)
- 牛客网wannafly 4,b题(小AA的数列
- Wannafly挑战赛4 B 小AA的数列
- nowcoder 小AA的数列
- nowcoder 小AA的数列
- newCoder Wannafly挑战赛4:B-小AA的数列 (位运算)
- bzoj 4017 小Q的无敌异或(所有子区间异或的和 与和的异或)
- Wannafly挑战赛1 B.Xorto 两区间异或和
- 各子区间和的异或和
- PAT-B 1049. 数列的片段和
- PAT-B 1049. 数列的片段和
- CF 665E 限制异或和的区间计数
- 序列子区间异或和
- 划分树求一个数列任意区间的第k小值
- a+aa+aaa+...+aa....a(n个a)的和
- PAT-B 1049. 数列的片段和(20)
- "aa\b"不等于“a"
- 找出区间 [a,b] 中能被 7 整除或含有数字 7 的数的个数
- BZOJ3834: [Poi2014]Solar Panels
- C++11容器中新增加的emplace相关函数的使用
- KNN sklearn python实现小示例
- JDBC 初级 下
- dbutils工具类:QueryRunner
- wannafly4 挑战杯 B.小AA的数列(区间异或和)
- JSON是什么呢?
- lua中的协同程序
- 【Scikit-Learn 中文文档】分解成分中的信号(矩阵分解问题)
- Python的入门与进阶的学习笔记之Python基本数据类型
- 写作的开始
- 【Scikit-Learn 中文文档】聚类
- VS2013+openCV3.2.0配置
- hibernate系列七:多对一关联配置及案例