bzoj [Scoi2016]美味
[Scoi2016]美味
Time Limit: 30 Sec Memory Limit: 256 MB
Submit: 721 Solved: 391
[Submit][Status][Discuss]
Description
Input
Output
输出 m 行,每行 1 个整数,ymax ,表示该位顾客选择的最美味的菜的美味值。
Sample Input
1 2 3 4
1 4 1 4
2 3 2 3
3 2 3 3
4 1 2 4
Sample Output
7
6
7
HINT
Source
题解:
区间最大异或值的经典做法是可持久化trie,但是加上一个数的话可持久化trie就变得非常的扯淡
考虑可持久化trie其实可以等价为一颗上限为2^k-1的主席树,在trie上确定一位其实相当于将答案的区间缩小的一半,也就是在主席树上向下走一层
当所有数加上x之后,我们在主席树上走的时候就不能直接调用siz[son[x][0]],但是因为所有数都被加了,所以我们其实要查询的是左子树的区间向前窜x位之后的区间有没有数,这样的话每次走的时候在主席树上重新查[l-x,mid-x]或者[mid+1-x,r-x]来判断应该往哪边走即可,复杂度多了个log,但是n=2*10^5,不虚
然后就过了
时间复杂度O(m log^2 n)
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
const int N=<<;
const int maxn=;
int n,m,tot;
int rt[maxn];
struct node
{
int ls,rs,siz;
}s[maxn*];
void insert(int x,int &y,int l,int r,int a)
{
y=++tot,s[y].siz=s[x].siz+;
if(l==r) return ;
int mid=(l+r)>>;
if(a<=mid) s[y].rs=s[x].rs,insert(s[x].ls,s[y].ls,l,mid,a);
else s[y].ls=s[x].ls,insert(s[x].rs,s[y].rs,mid+,r,a);
}
int query(int l,int r,int x,int y,int a,int b)
{
if(a<=l&&r<=b) return s[x].siz-s[y].siz;
int mid=(l+r)>>;
if(b<=mid) return query(l,mid,s[x].ls,s[y].ls,a,b);
if(a>mid) return query(mid+,r,s[x].rs,s[y].rs,a,b);
return query(l,mid,s[x].ls,s[y].ls,a,b)+query(mid+,r,s[x].rs,s[y].rs,a,b);
}
inline int find(int l,int r,int a,int b)
{
int i,j=,d;
for(i=<<;i;i>>=)
{
d=(b&i)>;
if(d&&!query(,N,rt[r],rt[l-],j-a,j+i-a-)) j+=i;
if(!d&&query(,N,rt[r],rt[l-],j+i-a,j+i+i-a-)) j+=i;
}
return b^j;
}
inline int rd()
{
int ret=,f=; char gc=getchar();
while(gc<''||gc>'') {if(gc=='-') f=-f; gc=getchar();}
while(gc>=''&&gc<='') ret=ret*+gc-'',gc=getchar();
return ret*f;
}
int main()
{
int i,a,b,c,d;
n=rd(),m=rd();
for(i=;i<=n;i++)
a=rd(),insert(rt[i-],rt[i],,N,a);
for(i=;i<=m;i++)
{
a=rd(),b=rd(),c=rd(),d=rd();
printf("%d\n",find(c,d,b,a));
}
}
bzoj [Scoi2016]美味的更多相关文章
- BZOJ 4571: [Scoi2016]美味
二次联通门 : BZOJ 4571: [Scoi2016]美味 /* BZOJ 4571: [Scoi2016]美味 dalao们都在说这题如果没有加法balabala就可以用可持久化trie解决了 ...
- bzoj 4571: [Scoi2016]美味 (主席树)
链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 题面; 4571: [Scoi2016]美味 Time Limit: 30 Sec ...
- bzoj4571: [Scoi2016]美味
4571: [Scoi2016]美味 Time Limit: 30 Sec Memory Limit: 256 MB Submit: 275 Solved: 141 [Submit][Status][ ...
- 【bzoj4571&&SCOI2016美味】
4571: [Scoi2016]美味 Time Limit: 30 Sec Memory Limit: 256 MBSubmit: 656 Solved: 350[Submit][Status][ ...
- [洛谷P3293] [SCOI2016]美味
洛谷题目链接:[SCOI2016]美味 题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n).有 m 位顾客,第 i 位顾客的期望值为 ...
- 【BZOJ4571】[Scoi2016]美味 主席树
[BZOJ4571][Scoi2016]美味 Description 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1≤i≤n).有 m 位顾客,第 i 位顾客的期望值 ...
- BZOJ.4571.[SCOI2016]美味(主席树 贪心)
题目链接 要求 \(b\ xor\ (a_j+x)\) 最大,应让 \(a_j+x\) 的最高位尽可能与b相反.带个减法Trie树好像很难做?反正我不会. 从最高位开始,如果这位b是0/1,判断是否存 ...
- bzoj 4571 [Scoi2016]美味——主席树
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4571 按位考虑,需要的就是一个区间:比如最高位就是(2^k -x). 对于不是最高位的位置该 ...
- luogu P3293 [SCOI2016]美味
题目描述 一家餐厅有 n 道菜,编号 1...n ,大家对第 i 道菜的评价值为 ai(1<=i<=n).有 m 位顾客,第 i 位顾客的期望值为 bi,而他的偏好值为 xi .因此,第 ...
随机推荐
- codevs 3129 奶牛代理商IX
时间限制: 1 s 空间限制: 32000 KB 题目等级 : 白银 Silver 题目描述 Description 小X从美国回来后,成为了USACO中国区的奶牛销售代理商,专门出售质优价廉的“ ...
- python基础一 day11 装饰器(1)
接收的时候是聚合,调用的时候是打散 print(*args)本来在里面用的时候是用args,是一个元祖,加上一个 * 号,把元祖解包了(打散了). from functools import ...
- Mac终端(Terminal)自定义颜色,字体,背景
使用Mac作为开发机的时候,苹果终端自带的颜色黑白,字体又小,看起来确实不是很舒服.那推荐大家使用Solarized配色方案.Solarized 是目前最完整的 Terminal/Editor/IDE ...
- mysql存储引擎中InnoDB与Myisam的区别及应用场景
1. 区别: (1)事务处理: MyISAM是非事务安全型的,而InnoDB是事务安全型的(支持事务处理等高级处理): (2)锁机制不同: MyISAM是表级锁,而InnoDB是行级锁: (3)sel ...
- 【C语言项目】贪吃蛇游戏(下)
目录 00. 目录 07. 游戏逻辑 7.5 按下ESC键结束游戏 7.6 判断是否撞到墙 7.7 判断是否咬到自己 08. 游戏失败界面设计 8.1 游戏失败界面边框设计 8.2 撞墙失败界面 8. ...
- metasploit-shellcode生成
0x00 安装metasploit $ curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/t ...
- PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20)
PAT (Basic Level) Practise (中文)-1037. 在霍格沃茨找零钱(20) http://www.patest.cn/contests/pat-b-practise/1037 ...
- sstable, bigtable,leveldb,cassandra,hbase的lsm基础
先看懂文献1和2 1. 先了解sstable.SSTable: Sorted String Table [2] [10] WiscKey: 类似myisam, key value分离, 根据ssd优 ...
- iOS开发遇到的坑之三--使用asi框架在xcode下正常运行,但是打包时却不能进行网络访问
前言: 前两篇博客遇到的问题是前几天在实验室开发的时候遇到的,花了两三天时间在上面,今天突然心血来潮,想把这些”坑”写下来,所以才有了这两篇写的很丑的博客随笔 今天在开发时又遇到一个问题,那就是标题所 ...
- ios之UIPageControl
分页控件是一种用来取代导航栏的可见指示器,方便手势直接翻页,最典型的应用便是iPhone的主屏幕,当图标过多会自动增加页面,在屏幕底部你会看到原点,用来只是当前页面,并且会随着翻页自动更新. 一.创建 ...