[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]火星商店问题的更多相关文章

  1. 【LG4585】[FJOI2015]火星商店问题

    [LG4585][FJOI2015]火星商店问题 题面 bzoj权限题 洛谷 \(Notice:\) 关于题面的几个比较坑的地方: "一天"不是一个操作,而是有0操作就相当于一天开 ...

  2. 洛谷 P4585 [FJOI2015]火星商店问题 解题报告

    P4585 [FJOI2015]火星商店问题 题目描述 火星上的一条商业街里按照商店的编号\(1,2,\dots,n\) ,依次排列着\(n\)个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非 ...

  3. [FJOI2015]火星商店问题(线段树分治,可持久化,Trie树)

    [FJOI2015]火星商店问题 前天考了到线段树分治模板题,全场都切了,就我不会QAQ 于是切题无数的Tyher巨巨就告诉我:"你可以去看看火星商店问题,看了你就会了." 第一道 ...

  4. 【题解】P4585 [FJOI2015]火星商店问题(线段树套Trie树)

    [题解]P4585 [FJOI2015]火星商店问题(线段树套Trie树) 语文没学好不要写省选题面!!!! 题目大意: 有\(n\)个集合,每个集合有个任意时刻都可用的初始元素.现在有\(m\)个操 ...

  5. [FJOI2015]火星商店问题(分治+可持久化)

    题目描述 火星上的一条商业街里按照商店的编号1,2 ,…,n ,依次排列着n个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非负整数val来标价.每个商店每天都有可能进一些新商品,其标价可能与已 ...

  6. BZOJ4137 & 洛谷4585:[FJOI2015]火星商店问题

    https://www.lydsy.com/JudgeOnline/problem.php?id=4137 https://www.luogu.org/problemnew/show/P4585 火星 ...

  7. 【bzoj4137】[FJOI2015]火星商店问题

    *题目描述: 火星上的一条商业街里按照商店的编号1,2 ,…,n ,依次排列着n个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非负整数val来标价.每个商店每天都有可能进一些新商品,其标价可能 ...

  8. [洛谷P4585] [FJOI2015] 火星商店问题

    Description 火星上的一条商业街里按照商店的编号 \(1\),\(2\) ,-,\(n\) ,依次排列着 \(n\) 个商店.商店里出售的琳琅满目的商品中,每种商品都用一个非负整数 \(va ...

  9. 2019.01.13 bzoj4137: [FJOI2015]火星商店问题(线段树分治+可持久化01trie)

    传送门 题意:序列上有nnn个商店,有两种事件会发生: sss商店上进购标价为vvv的一个物品 求编号为[l,r][l,r][l,r]之间的位置买ddd天内新进购的所有物品与一个数xxx异或值的最大值 ...

随机推荐

  1. [翻译] NMBottomTabBarController

    NMBottomTabBarController A customisable tab bar controller for iOS written in Objective C. It uses a ...

  2. php 代码编写规范

    1 编写目的为了更好的提高技术部的工作效率,保证开发的有效性和合理性,并可最大程度的提高程序代码的可读性和可重复利用性,指定此规范.开发团队根据自己的实际情况,可以对本规范进行补充或裁减. 2 整体要 ...

  3. SQL Sever——妙用种子列

    /****** Script for SelectTopNRows command from SSMS ******/ SELECT TOP 1000 [OFFRCD_STATUS_ID] ,[OFF ...

  4. P2607 [ZJOI2008]骑士

    题目描述 Z国的骑士团是一个很有势力的组织,帮会中汇聚了来自各地的精英.他们劫富济贫,惩恶扬善,受到社会各界的赞扬. 最近发生了一件可怕的事情,邪恶的Y国发动了一场针对Z国的侵略战争.战火绵延五百里, ...

  5. virtualbox+vagrant学习-2(command cli)-26-vagrant share命令

    Share share命令初始化了一个vagrant share会话,允许你与世界上任何一个人共享vagrant环境,允许在几乎任何网络环境中直接在vagrant环境中进行协作. 你可以在本博客的vi ...

  6. regex_match

    原型:bool regex_match(InputSequence[,MatchResults] , Regex[ , Flags]); 当模式匹配整个输入序列成功时,返回的是true,否则返回fal ...

  7. Cannot find module 'webpack/lib/node/NodeTemplatePlugin' 问题原因和解决方案

    当我配置了html-webpack-plugin 打包时报了这个错,查看了一下package.json发现没有webpack,说明使用了全局安装的webapck,导致的版本差异. 这里在本地安装web ...

  8. HDU 1950(LIS)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1950 Bridging signals Time Limit: 5000/1000 MS (Java ...

  9. 一个考验c语言和数据结构功底的小项目

    想测一下自己c语言学习水平的朋友可以做一下这个项目试试,能做出来说明c语言已经入门了   #include<stdio.h> #include<stdlib.h> #inclu ...

  10. Spring Cloud和Dubbo整合开发笔记(1)

    一.需求背景: 公司内部老项目微服务技术栈使用Dubbo, 新项目技术栈使用主流的Spring Cloud相关组件开发,新旧项目涉及交互调用,无法直接通信数据传递. 老项目基于Dubbo,重构代码升级 ...