数据结构 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

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 int p[100002];
 5 int left[100002]={0};
 6 int right[100002]={0};
 7
 8 int main()
 9 {
10     int i,j;
11     int len,ask,l,r;
12     int onenum=0;
13
14     scanf("%d %d",&len,&ask);
15     for(i=1;i<=len;i++)
16     {
17         scanf("%d",p+i);
18         if(p[i]==1) onenum++;
19     }
20
21     for(i=1;i<=len;i++)
22     {
23         if(i==1)
24             left[i] = p[i];
25         else
26             left[i] = left[i-1] + p[i];
27     }
28     for(i=len;i>=1;i--)
29     {
30         if(i==len)
31             right[len] = p[len];
32         else
33             right[i] = right[i+1] + p[i];
34     }
35 //    for(i=1;i<=len;i++) printf("%d ",p[i]); printf("\n");
36 //    for(i=1;i<=len;i++) printf("%d ",left[i]); printf("\n");
37 //    for(i=1;i<=len;i++) printf("%d ",right[i]); printf("\n");
38     for(i=0;i<ask;i++)
39     {
40         scanf("%d %d",&l,&r);
41         int num;
42         if(l==1)
43             num = onenum - right[r+1];
44         else if(r==len)
45             num = onenum - left[l-1];
46         else
47             num = onenum - left[l-1] - right[r+1];
48
49         printf("%d\n",num%2);
50     }
51
52     return 0;
53 }
时间: 2024-10-29 02:01:47

数据结构 elegant_sequence(优雅的序列)的相关文章

东北育才 d1t1 优雅的序列

优雅的序列 grace.cpp 题目描述 设一个含有n个数的序列的优雅度为满足ai<ai+1(1≤i<n)的i的个数.现在给出一个含有n个数的序列,小X想要将这n个数调整顺序,使得新序列的优雅度最大.同样喜欢优雅的你,能否求出这个最大的优雅度呢? 输入格式: 第1行:一个整数n 第2行:n个整数,表示原始序列 输出格式: 输出1个整数,为新序列的最大优雅度 样例输入 样例输出 5 1 3 2 4 1 3 样例解释 排列方式不唯一,一种可行的排列方式为1.2.1.3.4,优雅度为3.可以通过穷举

数据结构_coprime_sequence(互质序列)

coprime_sequence(互质序列) 问题描述 顾名思义,互质序列是满足序列元素的 gcd 为 1 的序列.比如[1,2,3],[4,7,8],都是互质序列. [3,6,9]不是互质序列.现在并不要求你找出一个互质序列,那样太简单了!真正的问题描述是:给定一个序列,删除其中一个元素使得剩下元素的 gcd 最大,输出这个 gcd. ★数据输入 输入第一行为一个正整数 n. 第二行为 n 个正整数 ai(1<=ai<=10^9).80%的数据 2<=n<=1000.100%的数

数据结构和算法——将序列分解为单独的变量

①问题:假如有一个包含N多个元素的元组或者序列,现在想分解为N个单独的变量. 1 L = (4, 5) 2 x, y = L ②进阶篇: data = ['sb', '大铁锤', '51', (2018, 6, 2)] a, b, c, date = data a='sb' b='大铁锤' c=51 date=(2018, 6, 2) ③ data = ['sb', '大铁锤', '51', (2018, 6, 2)] a, b, c, (year, mon, day) = data year

基础知识回顾——通用序列操作

数据结构是计算机存储和组织数据的方式.Python中有三类四种内建的数据结构,分别是序列(List.Tuple).映射(Dictionary)以及集合(Set). 所有序列类型都可以进行某些特定的操作,这些操作包括:索引.分片.加.乘.迭代以及检查某个元素是否属于序列的成员(成员资格),还有计算序列长度.找出最大元素和最小元素的内建元素. 1.索引 1 >>> greeting = ("hello") 2 >>> greeting[1] 3 'e'

《Python从小白到大牛》第9章 数据结构

当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入.使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找.在计算机程序中会有很多数据,这些数据也需要一个容器将他们管理起来,这就是数据结构.常见的数据结构:数组(Array).集合(Set).列表(List).队列(Queue).链表(Linkedlist).树(Tree).堆(Heap).栈(Stack)和字典(Dictionary)等结构. Python中数据容器主要有:序列.集合和字典. 注意Python中并没有数组结构,因为

7-感觉身体被掏空,但还是要学Pandas(下)

本周群主用了两天时间为浙师大的<旅游大数据分析师--Pandas数据清洗>课程备课,和Pandas来了一次深度亲密接触.现在做梦都是DataFrame变形:stack,unstack,pivot table--对Pandas有了全新的认识:原来它不只是提供类似表格的数据结构DataFrame这么简单,简直就是Excel+SQL的集大成者!而且拥有Python如此优雅的语法,真的可以说是"微言大义","玄之又玄,众妙之门","妙处难与君说&quo

iOS Swift语言的成长

The Death of Cocoa 2015-03-06MatttNSHipster The Death of Cocoa Cocoa实际就是Objective-C的标准库,包含了许多用语言编写程序最需要的一些框架,例如 Foundation.AppKit 和 Core Data.而 Cocoa Touch 基本上是用 UIKit 替换 AppKit,而且它与 Cocoa 在很多系统框架都是能互换的. 对于我们大多数人而言,苹果的简洁.优雅和它软硬件的结合是我们为什么在这个平台开发的原因.实际

Python学习笔记总结

1Python的数据结构: 1:序列:  列表(可改变) 元祖 (不可改变) 2:映射:字典 3:无序:集合 ASCII:八位   Unicode:16位 2Python的函数 abs:绝对值 match.sqrt:开方 match.ceil:上入 match.floor:下入 pow:幂 repr:字符串 str:字符串 round:四舍五入 help:帮助 input:输入 raw_input:原始输入 camtch.sqrt:负数开方 3Python的运行 (1)命令行运行程序:Pytho

提升大数据数据分析性能的方法及技术(二)

上部分链接 致谢:因为我的文章之前是在word中写的,贴过来很多用mathtype编辑的公式无法贴过来,之前也没有经验. 参考http://www.cnblogs.com/haore147/p/3629895.html,一文完成公式的迁移. 同时,说一句,word中用mathtype写的公式用ALT+\可以转换成对应的latex语法公式. 5 数据流过滤技术 信息大爆炸时代的到来使得针对数据进行深层次的挖掘成为数据处理的核心任务[21].但是在上面已经提到了,源数据的来源和数据的组成格式都是各种