洛谷P3293 [SCOI2016]美味(主席树)】的更多相关文章

传送门 据说这题做法叫做可持久化trie树?(然而我并不会) 首先考虑一下贪心,从高位到低位枚举,如果能选1肯定比选0优 假设已经处理到了$b$的第$i$位,为1(为0的话同理就不说了) 那么只有当$a_j+x$的第$i$位为0时才能让答案的第$i$位为$1$ 考虑把$x$的影响去掉.如果当前的答案是$ans$(即令前面几位贪心情况下最大且第$i$位为0时的$a$),那么只有在区间$[ans-x,ans+(1<<i)-1-x]$的数能在加上$x$之后第$i$位为0(这个可以自己手动算一算) 如…
洛谷题目链接:[SCOI2016]美味 题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n).有 m 位顾客,第 i 位顾客的期望值为 bi,而他的偏好值为 xi .因此,第 i 位顾客认为第 j 道菜的美味度为 bi XOR (aj+xi),XOR 表示异或运算. 第 i 位顾客希望从这些菜中挑出他认为最美味的菜,即美味值最大的菜,但由于价格等因素,他只能从第 li 道到第 ri 道中选择.请你帮助他们找出最美味的菜. 输入输出格式 输入格…
给定长度为 \(n\) 序列 \(a[i]\) ,每次询问区间 \([l,r]\) ,并给定 \(b,x\) 中的一个数 \(p=a[i]\) ,使得最大化 \(b \bigoplus p^x\) 主席树+按位贪心. 我们可以直接贪每一位长什么样子,然后再主席树上区间查询即可. #include<iostream> #include<cstdio> #include<algorithm> #include<cmath> #include<cstring…
洛谷P2617 Dynamic Rankings 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[j]中第k小的数是多少(1≤k≤j-i+1),并且,你可以改变一些a[i]的值,改变后,程序还能针对改变后的a继续回答上面的问题.你需要编一个这样的程序,从输入文件中读入序列a,然后读入一系列的指令,包括询问指令和修改指令. 对于每一个询问指令,你必须输出正确的回答. 输入输出格式…
[BZOJ4571][Scoi2016]美味 Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期望值为 bi,而他的偏好值为 xi .因此,第 i 位顾客认为第 j 道菜的美味度为 bi XOR (aj+xi),XOR 表示异或运算.第 i 位顾客希望从这些菜中挑出他认为最美味的菜,即美味值最大的菜,但由于价格等因素,他只能从第 li 道到第 ri 道中选择.请你帮助他们找出最美味的菜. Inpu…
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 题面; 4571: [Scoi2016]美味 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 1089  Solved: 633[Submit][Status][Discuss] Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期 望值为…
正解:主席树/莫队 解题报告: 传送门! 这题好像就是个主席树板子题的样子,,,? 毕竟,主席树的最基本的功能就是,维护一段区间内某个数字的个数 但是毕竟是刚get到主席树,然后之前做的一直是第k大,这个是维护区间内数字个数,题目类型不一样,所以还是积累一下这个题型和对应的方法QAQ 顺便也水一发题解 所以还是写下这题 首先不难想到对于[l,r]的点直接把r的树和l-1的树做差就可以得到 这样现在就相当于是得到了一棵线段树 那肯定就是维护这个区间的所有数字的出现次数(,,,我发现我这里出现了两个…
题目链接 要求 \(b\ xor\ (a_j+x)\) 最大,应让 \(a_j+x\) 的最高位尽可能与b相反.带个减法Trie树好像很难做?反正我不会. 从最高位开始,如果这位b是0/1,判断是否存在 \(sum+(1<<l)-x\leq a_j<sum+(1<<l+1)-x\) / \(sum-x\leq a_j<sum+(1<<l)-x\).用主席树判断. 我还在想对于一个询问怎么一次算..直接O(logn)枚举. 注意要从0开始! //46136kb…
题意:给一个数列,每次询问一个区间内有没有一个数出现次数超过一半 题解: 最近比赛太多,都没时间切水题了,刚好日推了道主席树裸题,就写了一下 然后 WA80 WA80 WA0 WA90 WA80 ?????? 结果重新审题发现没有数据范围???? 哦,原来是500000,我是真的菜 因为必须要一个数出现超过一半 所以这个数肯定会在左子树和右子树中总个数和较大的那个里. 显然这样二分找到树底复杂度是logn的 如果此时树底这个点的数值大于一半,那么就输出这个解,否则puts("0") 以…
挺裸的,没啥可讲的. 不带修改的主席树裸题 Code: #include<cstdio> #include<algorithm> using namespace std; const int maxn = 500000 + 5; int n, m ,root[maxn]; struct Chair_Tree{ int cnt_Tree; int lson[maxn * 50], rson[maxn * 50], sumv[maxn * 50]; void build(int l,…