Post 82

最近没状态也没时间,随便写点。

[SCOI2016]美味

题目描述

一家餐厅有 n 道菜,编号 1…n ,大家对第 i 道菜的评价值为 ai(1<=i<=n)。有 m 位顾客,第 i 位顾客的期望值为 bi,而他的偏好值为 xi 。因此,第 i 位顾客认为第 j 道菜的美味度为 bi XOR (aj+xi),XOR 表示异或运算。

第 i 位顾客希望从这些菜中挑出他认为最美味的菜,即美味值最大的菜,但由于价格等因素,他只能从第 li 道到第 ri 道中选择。请你帮助他们找出最美味的菜。

输入输出格式

输入格式:

第1行,两个整数,n,m,表示菜品数和顾客数。

第2行,n个整数,a1,a2,…,an,表示每道菜的评价值。

第3至m+2行,每行4个整数,b,x,l,r,表示该位顾客的期望值,偏好值,和可以选择菜品区间。

输出格式:

输出 m 行,每行 1 个整数,ymax ,表示该位顾客选择的最美味的菜的美味值。

输入输出样例

输入样例#1:

1
2
3
4
5
6
4 4
1 2 3 4
1 4 1 4
2 3 2 3
3 2 3 3
4 1 2 4

输出样例#1:

1
2
3
4
9 
7
6
7

说明

对于所有测试数据,$1<=n<=2*10^5,0<=ai,bi,xi<10^5,1<=li<=ri<=n(1<=i<=m);1<=m<=10^5​$

题解

时间不大够了,口胡一下。

我们枚举$b_i$的每一位,显然我们想让$x_i+a_j$的这一位是相反的。

那就考虑$a_j​$的值域范围就好。

由于有区间限制,所以使用可持久化线段树来解决。

END