题目名称 2941. leaves序列
输入输出 leaves_sequence.in/out
难度等级 ★☆
时间限制 2000 ms (2 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatar小一米 于2018-04-30加入
开放分组 全部用户
提交状态
分类标签
可持久化线段树
分享题解
通过:1, 提交:1, 通过率:100%
Gravatar小一米 100 6.651 s 327.55 MiB C++
关于 leaves序列 的近10条评论(全部评论)

2941. leaves序列

★☆   输入文件:leaves_sequence.in   输出文件:leaves_sequence.out   简单对比
时间限制:2 s   内存限制:512 MiB

题目背景:

李五四作为一个爱国青年,在绿埔军校任职门卫期间,曾积极投身推翻梁哥反动统治的革命事业。他积极发展身边的同学和门卫成为思想先进的革命战士,组建起了一支拥有着高昂斗志、严明纪律的革命队伍——树家军。他的战友们都亲切的称他为树老师。

然后,在李五四的革命事业成功之后,他理所当然地迅速腐化了,变成了贪婪の皇帝李五四

题目描述:

贪婪の皇帝李五四喜欢OR运算,因为它有一种横征暴敛的感觉,他还喜欢min(即,取最小值),因为它可以掩饰自己的贪婪。

于是当博弈向贪婪の皇帝李五四进贡了一个长度为N的序列A之后,贪婪の皇帝李五四对其表示了嫌弃,“至高无上的真主玛蒙啊,看看这个序列吧,这是圣·格里高利·尤利乌斯·弗朗西斯·阿道夫·弗里德里希·庄博弈先生的序列,它真是太无聊了,它的每一个区间的OR值和min值都和我的宣叙调一样烂得超凡脱俗。”

由于博弈进贡的序列A过于无聊,于是贪婪の皇帝李五四决定切博弈的腿玩。博弈不想一个人去德国,于是他要向贪婪の皇帝李五四证明序列A的卓尔不群。具体说,李五四会进行M次询问,他想知道的是某一个区间的所有子区间中,区间OR值加区间min值的结果最大的那个子区间的结果是多少。

由于李五四只是随便问问——毕竟切博弈的腿当然比瞪一个序列更加好玩啦——所以他发出询问后转瞬便忘了自己问了什么,这意味着这个题强制在线——

具体地说,当输入询问

x y 后,你需要回答的是区间[L,R]的答案

其中:

L=min((x+lasans)%N+1,(y+lasans)%N+1)

R=max((x+lasans)%N+1,(y+lasans)%N+1)

其中lasans为上次询问的答案,一开始为0。

输入格式:

第一行为两个正整数N 和M,分别表示序列长度和询问数,用一个空格隔开

第二行有N个正整数,其中第i个数为序列A的第i位,中间用空格隔开

之后的M行每行两个正整数x,y表示一对询问

输出格式:

对每次询问输出一行,一个正整数表示该询问的答案

样例输入:

3 3

7 8 8

0 1

0 1

0 1

样例输出:

22

22

22

样例解释:

询问了区间[1,2]三次,询问区间[1,2]其答案为区间[1,2]的值为15+7=22

(wa!还有样例解释啊~~)

数据规模与约定:

存在20%:N<=100,M<=100

存在20%:N<=1000,M<=600000

存在20%:N<=12000,M<=6000

100%:N<=12000,M<=600000,所有输入的数在[0,1000000000]之间

请注意输入输出的数据类型

题目来源:

原创 by @尼采