数据结构 elegant_sequence(优雅的序列)
数据结构 elegant_sequence(优雅的序列)
问题描述
如果一个序列的元素的异或和等于 1,我们称这个序列为优雅的序列。现在
给你一个 01 序列,和 m 次询问。对于每次询问,给出 l,r。请你输出子序列 a[l..r]
的异或和。
★数据输入
输入第一行为正整数 n, m。
第二行为 n 个正整数 a[1..n]。 (1<=ai<=10^9)
接下来的 m 行,每行两个数 l,r。 (1<=l<=r<=n)
80%的数据 1<=n,m<=1000.
100%的数据 1<=n,m<=100000.
★数据输出
输出 m 行,每行一个数表示 a[l…r]的异或和。
输入示例 | 输出示例 |
3 6 1 1 0 1 1 1 2 1 3 2 2 2 3 3 3 |
1 0 0 1 1 0 |
★Hint
数列下标从 1 开始。
解题思路
奇数个1的异或和为1,偶数个1的异或和为0
类似 [coprime_sequence(互质序列)](http://www.cnblogs.com/cbattle/p/7577344.html),用数组记录中间值
********************************************************************************
写完后发现之用算从左到右的值存入left[] ,L到R的异或和为left[R]-left[L-1]
********************************************************************************
code
#include <stdio.h>
#include <stdlib.h> int p[];
int left[]={};
int right[]={}; int main()
{
int i,j;
int len,ask,l,r;
int onenum=; scanf("%d %d",&len,&ask);
for(i=;i<=len;i++)
{
scanf("%d",p+i);
if(p[i]==) onenum++;
} for(i=;i<=len;i++)
{
if(i==)
left[i] = p[i];
else
left[i] = left[i-] + p[i];
}
for(i=len;i>=;i--)
{
if(i==len)
right[len] = p[len];
else
right[i] = right[i+] + p[i];
}
// for(i=1;i<=len;i++) printf("%d ",p[i]); printf("\n");
// for(i=1;i<=len;i++) printf("%d ",left[i]); printf("\n");
// for(i=1;i<=len;i++) printf("%d ",right[i]); printf("\n");
for(i=;i<ask;i++)
{
scanf("%d %d",&l,&r);
int num;
if(l==)
num = onenum - right[r+];
else if(r==len)
num = onenum - left[l-];
else
num = onenum - left[l-] - right[r+]; printf("%d\n",num%);
} return ;
}
数据结构 elegant_sequence(优雅的序列)的更多相关文章
- python数据结构(一)------序列
数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合:在Python中,最基本的数据结构是序列(sequence),序列中的每个元素被分配一个序列号--即元素的位置,也称为索引. p ...
- Fluent_Python_Part2数据结构,02-array-seq,序列类型
1. 序列数据 例如字符串.列表.字节序列.元组.XML元素.数据库查询结果等,在Python中用统一的风格去处理.例如,迭代.切片.排序.拼接等. 2. 容器序列与扁平序列 容器序列:容器对象包含任 ...
- 数据结构_coprime_sequence(互质序列)
coprime_sequence(互质序列) 问题描述 顾名思义,互质序列是满足序列元素的 gcd 为 1 的序列.比如[1,2,3],[4,7,8],都是互质序列. [3,6,9]不是互质序列.现在 ...
- 《流畅的Python》第二部分 数据结构 【序列构成的数组】【字典和集合】【文本和字节序列】
第二部分 数据结构 第2章 序列构成的数组 内置序列类型 序列类型 序列 特点 容器序列 list.tuple.collections.deque - 能存放不同类型的数据:- 存放的是任意类型的对象 ...
- 【读书笔记】《Python_Cookbook3》第一章:数据结构和算法
Python提供了多样化有用的内建数据结构,例如列表.集合.字典.大多数时候,这些结构的使用比较简单,然后,一些关于搜索.排序.过滤的常见问题经常出现.本章节的目标是讨论常见的数据结构,以及涉及到 ...
- python的序列类
1,我们常见的数据结构有哪些是序列类 序列类型的分类: ① 容器序列:list,tuple,deque(可以防止任意的类型的容器) ② 扁平序列:str,bytes,bytearray,array ...
- 第2章 Python序列
Python序列类似于C或Basic中的一维.多维数组等,但功能要强大很多,使用也更加灵活.方便,Head First Python一书就戏称列表是“打了激素”的数组. Python中常用的序列结构有 ...
- Redis删除特定前缀key的优雅实现
还在用keys命令模糊匹配删除数据吗?这就是一颗随时爆炸的炸弹! Redis中没有批量删除特定前缀key的指令,但我们往往需要根据前缀来删除,那么究竟该怎么做呢?可能你一通搜索后会得到下边的答案 re ...
- Python 官方中文教程(简)
Python 官方教程 前言 这是一次系统学习Python官方教程的学习笔记 整个教程一共16章, 在学习过程中记录自己不知道的和一些重要的知识, 水平有限, 请指正. Python3.7 官方教程. ...
随机推荐
- celery 停止执行中 task
目录 原因 解决过程 原因 因为最近项目需求中需要提供对异步执行任务终止的功能,所以在寻找停止celery task任务的方法.这种需求以前没有碰到过,所以,只能求助于百度和google,但是找遍了资 ...
- python基础准备
老男孩python全栈学习day1 第一讲python基础: 1.python起源:python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中 ...
- Kubernetes创建挂载共享存储的容器
原文链接:https://www.58jb.com/html/135.html 在上一次的Mysql容器中,已经使用过了配置宿主机目录挂载的方式,这样虽然方便但是不够安全:一般都是把数据存储在远程服务 ...
- JDBC小常识
1 JDBC连接数据库6步 Load the JDBC Driver Establish the Database Connection Create a Statement Object Execu ...
- 第十篇 javascript基础语法
1)基本概念 a) 语句(statement)是为了完成某种任务而进行的操作,语句以分号结尾,一个分号就表示一个语句结束.:如:var a = 1; b) 表达式(expression),指一个为了得 ...
- 第八篇 web开发学习资源
互联网时代,最好的资源都在网上,好好利用网络学起来! 偶然才发现好资源,很多是E文的,看来努力的路还很长! 1)下面是一个老外收集的PHP资源,确实要为此分享点赞. https://github.co ...
- Activiti:MalformedByteSequenceException: 3 字节的 UTF-8 序列的字节 3 无效。
在win下开发,有时编译或运行项目会报3字节的UTF-8序列的字节3无效. 解决该问题的办法 1.将xml头文件改为GBK编码方式 ,我这里不OK <?xml version="1.0 ...
- java流类、、、理解不够,流太多不知怎么用好?
总结:输入流.输出流..子类多.需要加强: package com.da; import java.io.*; public class rtr { public static void main(S ...
- Make 命令
Linux 下 make 命令是系统管理员和程序员用的最频繁的命令之一.管理员用它通过命令行来编译和安装很多开源的工具,程序员用它来管理他们大型复杂的项目编译问题.本文我们将用一些实例来讨论 make ...
- Modules:template
ylbtech-Modules: 1.返回顶部 1. 2. 2.返回顶部 3.返回顶部 4.返回顶部 5.返回顶部 6.返回顶部 7.返回顶部 8.返回顶部 9.返 ...