题目名称 | 2941. leaves序列 |
---|---|
输入输出 | leaves_sequence.in/out |
难度等级 | ★☆ |
时间限制 | 2000 ms (2 s) |
内存限制 | 512 MiB |
测试数据 | 10 |
题目来源 | 小一米 于2018-04-30加入 |
开放分组 | 全部用户 |
提交状态 | |
分类标签 | |
分享题解 |
通过:1, 提交:1, 通过率:100% | ||||
小一米 | 100 | 6.651 s | 327.55 MiB | C++ |
关于 leaves序列 的近10条评论(全部评论) |
---|
题目背景:
李五四作为一个爱国青年,在绿埔军校任职门卫期间,曾积极投身推翻梁哥反动统治的革命事业。他积极发展身边的同学和门卫成为思想先进的革命战士,组建起了一支拥有着高昂斗志、严明纪律的革命队伍——树家军。他的战友们都亲切的称他为树老师。
然后,在李五四的革命事业成功之后,他理所当然地迅速腐化了,变成了贪婪の皇帝李五四
题目描述:
贪婪の皇帝李五四喜欢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 @尼采