NC14414 小AA的数列
题解:求一个序列问长度为偶数且在[L, R]范围内的异或和的和,这个题考察的异或和的问题,因为异或和的话就要牵扯到二进制,所以一般来说这类问题就是将其拆开来进行计算。
首先:异或计算
1xor1=0,0xor0=0,1xor0=1
很容易可以得到一个结论,就是在某位上的时候,只有1才会影响到他的值,当1的个数为奇数时,二进制那个位置上才会计算出1这个数字。因为此题是处理一个区间的问题,为了减少时间复杂度,我们可以用到前缀和这个工具就是这样子
for(int i=1;i<=n;i++){scanf("%d",&a[i]);a[i]=a[i]^a[i-1];
}
这个题又有一个条件:保证区间为偶数,所以
if(l&1) l++;
if(r&1) r--;
接下来枚举二进制的1-32位每个位置的情况,计算出最终结果每一位上有多少个1是在符合条件的亦或过程中产生的,然后加权求和就可以。因为这个题目需要的区间是偶数长度的区间,因此如果j是奇数,则以j为右边界的满足条件的区间的左边界肯定都是奇数。如果j是偶数,则以j为右边界的满足条件的区间的左边界肯定都是偶数。因此为了计算满足以第j个数字为结尾的符合条件的区间其第i位的贡献,所以我们需要分奇数和偶数。
#pragma GCC optimize(3,"Ofast","inline")
#include <bits/stdc++.h>
const int maxn = 1e5+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int mod = 1e9+7;
using namespace std;
int a[maxn];
int dp[10][10];
int main()
{int n,l,r;cin>>n>>l>>r;if(l==r){cout<<0<<endl;return 0;}for(int i=1;i<=n;i++){scanf("%d",&a[i]);a[i]=a[i]^a[i-1];}if(l&1) l++;if(r&1) r--;ll ans=0;for(int i=0;i<32;i++){memset(dp,0,sizeof(dp));ll sum=0,temp=1<<i;for(int j=l;j<=n;j++){dp[(a[j-l]>>i)&1][(j-l)&1]++;sum+=dp[((a[j]>>i)&1)^1][j&1];if(j>=r) dp[(a[j-r]>>i)&1][(j-r)&1]--;}ans=(ans+temp*sum%mod)%mod;}cout<<ans<<endl;return 0;}
NC14414 小AA的数列相关推荐
- 数学小故事之 数列极限|当“夹逼定理”爱上“定积分定义”
真真假假,假假真真 ...
- jzoj6275-[NOIP提高组模拟1]小L的数列【矩阵乘法,欧拉定理】
正题 题目大意 有递推式fi=∏j=1kfi−jbjf_{i}=\prod_{j=1}^kf_{i-j}^{b_j}fi=j=1∏kfi−jbj 给出f1∼kf_{1\sim k}f1∼k和 ...
- 小魂和他的数列(dp+树状数组优化)
链接:https://ac.nowcoder.com/acm/contest/3566/C 来源:牛客网 Sometimes, even if you know how something's goi ...
- 陕西师范大学第七届程序设计竞赛网络同步赛 J 黑猫的小老弟【数论/法拉数列/欧拉函数】...
链接:https://www.nowcoder.com/acm/contest/121/J 来源:牛客网 题目描述 大家知道,黑猫有很多的迷弟迷妹,当然也有相亲相爱的基友,这其中就有一些二五仔是黑猫的 ...
- 再论凭中学数学常识发现中学数学一系列重大错误——数列最起码常识让5千年都无人能识的自然数一下子暴露出来
再论凭中学数学常识发现中学数学一系列重大错误 --数列最起码常识让5千年都无人能识的自然数一下子暴露出来 黄小宁(通讯:广州市华南师大南区9-303 邮编510631) ...
- 本题要求将给定的n个整数从大到小排序后输出。
本题要求将给定的n个整数从大到小排序后输出. 输入格式: 输入第一行给出一个不超过10的正整数n.第二行给出n个整数,其间以空格分隔. 输出格式: 在一行中输出从大到小有序的数列,相邻数字间有一个空格 ...
- 以每行5个数输出fib前20 c语言循环,打印Fibonacci数列方法汇总(前20项,每行5个)...
NO.1 迭代法 标签:通俗.易懂 思路:先打印第一项.再在循环里面执行fib=fib1+fib2,把fib2赋给fib1,把fib赋给fib2,每行5个可使用if函数(循环次数对5取余). #inc ...
- 沈阳师范大学PTA百题刷分
沈阳师范大学PTA百题刷分 6-1 函数选择法排序 (10分) 用选择法对数组a 进行由小到大的排序. 函数接口定义: void fun(int a[],int n) 其中a和n都是用户传入的参数,函 ...
- C语言经典编程题100例(61~80)
目录 61.练习7-7 矩阵运算 62.练习7-8 方阵循环右移 63.习题6-1 分类统计字符个数 64.习题6-2 使用函数求特殊a串数列和 65.习题6-4 使用函数输出指定范围内的Fibona ...
最新文章
- python【力扣LeetCode算法题库】876- 链表的中间结点
- 剑指Offer #05 用两个栈实现队列(模拟)
- ABAP中的动态运算函数
- 2019.3.1版本pycharm撤销及恢复图解
- java如何打开整个package_Qulice - 如何在整个项目中禁用需要package-info.java的规则?...
- 龙图 VP 李翀:数据化运营及云计算下的运维
- Postico —— OS X 上的免费 PostgreSQL 客户端
- Git中的bash与CMD的区别
- java jtextfield 事件_java – 处理JTextField中的编辑事件
- iis php5.2 cgi,在PHP 5.2.6 / IIS CGI中清空$_POST数组
- 电脑雕刻教程_C4D无敌渲染神器! 阿诺德全套预设+案例教程+3.0汉化插件合集!真香!【810期】...
- java中的问题_java中一些常见问题
- 【变废为宝】电信IPTV中兴zxv10 b860Av1.1
- dw做注册登录页面HTML代码,用DW做的简单的个人网站(可以用来当网页作业)
- 【三维GIS】Google Map/Google Earth三维模型提取
- vm 无法打开本地文件进行写入
- RQNOJ 341 星门跳跃【解题报告】
- HC-05蓝牙模块配对方法及AT指令配置
- 计算机毕业设计-springboot企业考勤管理系统(前后端分离)员工考勤管理系统-公司日常管理系统java代码
- CentOS7中使用yum安装php5.6的方法
热门文章
- ACMNO.44 C语言-平均分 有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
- 虚拟机CENTOS7下 安装8.0版本MySQL MySQL主从配置详细~
- 如何实现C++中的多线程编程
- 【OpenCV 4开发详解】图像修复
- 【OpenCV 4开发详解】图像距离变换
- 推荐一些顶级的Android开发书籍(转)
- C# Aop简单扫盲及ORM实体类属性拦截示例
- virsh 常用操作
- Silverlight实用窍门系列:52.Silverlight中的MVVM框架极速入门(以MVVM Light Toolkit为例)...
- 最新dnsmasq安装部署详解(centos6)