[FJOI2015]火星商店问题
[FJOI2015]火星商店问题
神仙线段树分治。。。不过我不会。
这题用线段树套可持久化Trie还是能写的。
常数有点大,洛谷垫底水平。
// luogu-judger-enable-o2
#include<bits/stdc++.h>
#define il inline
#define vd void
typedef long long ll;
il int gi(){
int x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9'){
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')x=x*10+ch-'0',ch=getchar();
return x*f;
}
int rt[2000000],ch[10000000][2],tot[10000000];
int cnt,id;
il vd cp(int a,int b){ch[b][0]=ch[a][0],ch[b][1]=ch[a][1],tot[b]=tot[a];}
il vd Insert(int lst,int p){
rt[++cnt]=++id;
cp(rt[lst],rt[cnt]);
int y=rt[cnt];
for(int i=16;~i;--i){
++tot[y];
int t=(p>>i)&1;
cp(ch[y][t],++id);ch[y][t]=id;
y=ch[y][t];
}
++tot[y];
}
il int Query(int x,int y,int k){
int ans=0;
for(int i=16;~i;--i){
int t=(k>>i)&1;
if(tot[ch[y][!t]]!=tot[ch[x][!t]])ans+=1<<i,x=ch[x][!t],y=ch[y][!t];
else x=ch[x][t],y=ch[y][t];
}
return ans;
}
std::vector<std::pair<int,int> >S[400001];
#define mid ((l+r)>>1)
#define ls (x<<1)
#define rs (x<<1|1)
typedef const int& ci;
il vd update(int x,int l,int r,ci p,ci d,ci T){
Insert(S[x].back().first,d);
S[x].push_back(std::make_pair(cnt,T));
if(l==r)return;
if(p<=mid)update(ls,l,mid,p,d,T);
else update(rs,mid+1,r,p,d,T);
}
il int query(int x,int l,int r,ci L,ci R,ci k,ci d){
if(L<=l&&r<=R){
int LL=0,RR=S[x].size()-1;
while(LL<RR){
int md=(LL+RR)>>1;
if(S[x][md+1].second<d)LL=md+1;
else RR=md;
}
return Query(rt[S[x][LL].first],rt[S[x].back().first],k);
}
int ans=0;
if(L<=mid)ans=std::max(ans,query(ls,l,mid,L,R,k,d));
if(mid<R)ans=std::max(ans,query(rs,mid+1,r,L,R,k,d));
return ans;
}
int main(){
#ifndef ONLINE_JUDGE
freopen("4585.in","r",stdin);
freopen("4585.out","w",stdout);
#endif
int n=gi(),m=gi();
for(int i=1;i<=n;++i)Insert(i-1,gi());
int T=0,opt,l,r,x,d;
for(int i=1;i<=4*n;++i)S[i].push_back(std::make_pair(0,0));
for(int i=1;i<=m;++i){
opt=gi();
if(opt==0){
x=gi(),d=gi(),++T;
update(1,1,n,x,d,T);
}else{
l=gi(),r=gi(),x=gi(),d=gi();
int ans=Query(rt[l-1],rt[r],x);
if(d)ans=std::max(ans,query(1,1,n,l,r,x,T-d+1));
printf("%d\n",ans);
}
}
return 0;
}
[FJOI2015]火星商店问题的更多相关文章
- 【LG4585】[FJOI2015]火星商店问题
[LG4585][FJOI2015]火星商店问题 题面 bzoj权限题 洛谷 \(Notice:\) 关于题面的几个比较坑的地方: "一天"不是一个操作,而是有0操作就相当于一天开 ...
- 洛谷 P4585 [FJOI2015]火星商店问题 解题报告
P4585 [FJOI2015]火星商店问题 题目描述 火星上的一条商业街里按照商店的编号\(1,2,\dots,n\) ,依次排列着\(n\)个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非 ...
- [FJOI2015]火星商店问题(线段树分治,可持久化,Trie树)
[FJOI2015]火星商店问题 前天考了到线段树分治模板题,全场都切了,就我不会QAQ 于是切题无数的Tyher巨巨就告诉我:"你可以去看看火星商店问题,看了你就会了." 第一道 ...
- 【题解】P4585 [FJOI2015]火星商店问题(线段树套Trie树)
[题解]P4585 [FJOI2015]火星商店问题(线段树套Trie树) 语文没学好不要写省选题面!!!! 题目大意: 有\(n\)个集合,每个集合有个任意时刻都可用的初始元素.现在有\(m\)个操 ...
- [FJOI2015]火星商店问题(分治+可持久化)
题目描述 火星上的一条商业街里按照商店的编号1,2 ,…,n ,依次排列着n个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非负整数val来标价.每个商店每天都有可能进一些新商品,其标价可能与已 ...
- BZOJ4137 & 洛谷4585:[FJOI2015]火星商店问题
https://www.lydsy.com/JudgeOnline/problem.php?id=4137 https://www.luogu.org/problemnew/show/P4585 火星 ...
- 【bzoj4137】[FJOI2015]火星商店问题
*题目描述: 火星上的一条商业街里按照商店的编号1,2 ,…,n ,依次排列着n个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非负整数val来标价.每个商店每天都有可能进一些新商品,其标价可能 ...
- [洛谷P4585] [FJOI2015] 火星商店问题
Description 火星上的一条商业街里按照商店的编号 \(1\),\(2\) ,-,\(n\) ,依次排列着 \(n\) 个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非负整数 \(va ...
- 2019.01.13 bzoj4137: [FJOI2015]火星商店问题(线段树分治+可持久化01trie)
传送门 题意:序列上有nnn个商店,有两种事件会发生: sss商店上进购标价为vvv的一个物品 求编号为[l,r][l,r][l,r]之间的位置买ddd天内新进购的所有物品与一个数xxx异或值的最大值 ...
随机推荐
- 优化tableView加载cell与model的过程
优化tableView加载cell与model的过程 效果图 说明 1. 用多态的特性来优化tableView加载cell与model的过程 2. swift写起来果然要比Objective-C简洁了 ...
- 导出AD用户所属组,查询AD用户(aduser)
$ous="admin","bladmin","af","dd"for($i=0;$i -lt 2;$i++) { $o ...
- Python读写oracle数据库
最近项目中需要用到Python调用oracle实现读写操作,踩过很多坑,历尽艰辛终于实现了.性能怎样先不说,有方法后面再调优嘛.现在把代码和注意点记录一下. 1. 所需Python工具库 cx_Ora ...
- Python学习---Django关于POST的请求解析源码分析
当有请求到来之后,先判断请求头content_type是不是[application/x-www-form-urlencoded] --> 如果是则将请求数据赋值给request.body然后解 ...
- n=n+1 放在print(s)的前/后的影响
# 1+2+3+4+5+6+.....+100 = ? #关键在于,当n为时,才print(s) n = 1s = 0while n < 101: s = s + n if n ==100: # ...
- PHP设计模式系列 - 工厂模式
工厂模式 提供获取某个对象实例的一个接口,同时使调用代码避免确定实例化基类的步骤. 工厂模式 实际上就是建立一个统一的类实例化的函数接口.统一调用,统一控制. 工厂模式是php项目开发中,最常用的设计 ...
- 关于使用JQ scrollTop方法进行滚动定位
没图我说个锤子,先来个自拍镇楼. 又到了每周周五总结时间.我广州刘德华又来讲故事了.这一周没啥任务,就一个任务,产品口头交代了两句,也没有psd没有设计图没有样式.自由发挥,你自己敲代码做个作品出来. ...
- linux 几个常用的Debian更新源
deb http://ftp.debian.org/debian/ lenny main contrib non-free deb-src http://ftp.debian.org/debian/ ...
- 【cs231n】图像分类-Linear Classification线性分类
[学习自CS231n课程] 转载请注明出处:http://www.cnblogs.com/GraceSkyer/p/8824876.html 之前介绍了图像分类问题.图像分类的任务,就是从已有的固定分 ...
- 1101: [POI2007]Zap
Description FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a ,y<=b,并且gcd(x,y)=d.作为FGD的同 ...