[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异或值的最大值 ...
随机推荐
- MySQL Flashback 工具介绍
MySQL Flashback 工具介绍 DML Flashback 独立工具,通过伪装成slave拉取binlog来进行处理 MyFlash 「大众点点评」 binlog2sql 「大众点评(上海) ...
- c# 利用AForge和百度AI开发实时人脸识别
baiduAIFaceIdentify项目是C#语言,集成百度AI的SDK利用AForge开发的实时人脸识别的小demo,里边包含了人脸检测识别,人脸注册,人脸登录等功能 人脸实时检测识别功能 思路是 ...
- 10-19文献阅读之DCB
---恢复内容开始--- <一种精确估计区域北斗接收机硬件延迟的方法>-2016-,很有价值 估计北斗接收机硬件延迟,不需要传统复杂的电离层模型.已知一个参考站接收机硬件延迟的条件下,利用 ...
- 初识android界面布局
1.活动 活动是android开发中最基本的概念,也是最容易吸引用户的地方,是一种可以包含用户界面的组件. Activity类中定义了7个回调方法,覆盖了活动生命周期的每一个环节.具体如下: (1)o ...
- 如何处理高并发情况下的DB插入
1. 我们需要接收一个外部的订单,而这个订单号是不允许重复的 2. 数据库对外部订单号没有做唯一性约束 3. 外部经常插入相同的订单,对于已经存在的订单则拒绝处理 对于这个需求,很简单我们会用下 ...
- nodejs11安装教程(升级最新版本)
nodejs需要不断升级,那么电脑如何安装nodejs11呢,下面将通过亲身实践来详细介绍 工具/原料 电脑 nodejs11安装包 方法/步骤 访问node11官网,下载安装包,如下 ...
- impala jdbc驱动执行impala sql的一个坑(不支持多行sql)
架构使用spark streaming 消费kafka的数据,并通过impala来插入到kudu中,但是通过对比发现落地到kudu表中的数据比kafka消息数要少,通过后台日志发现,偶发性的出现jav ...
- Install Weblogic12C
1. 安装JDK软件 1.1)jdk版本选择 由于jdk编译出class文件是一个二进制文件,其中前四个字节是magic位,第五到第六个字节对应于minor和major.class文件的minor和m ...
- 使用redis4.0.1和redis-cluster搭建集群并编写重启shell脚本
1.删除机器上原有的redis2.8 关闭redis-server killall -9 redis-server 查找redis文件所在目录 which redis 删除相关文件 rm -rf re ...
- Codeforces 1106 E. Lunar New Year and Red Envelopes 优先队列+dp
题意大致是Bob新年拿红包,每个红包可以在s-t时间内取,但是取了之后得在d+1时间开始才能继续取红包. 同时他女儿能在m个时间点阻止他取红包,求女儿阻止后Bob取得的w总和最小值. Bob取红包的策 ...