BZOJ 4408: [Fjoi 2016]神秘数 主席树 + 神题
Code:
#include<bits/stdc++.h>
#define lson ls[x]
#define mid ((l+r)>>1)
#define rson rs[x]
#define maxn 300003
#define inf 1000000001
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int cnt;
int ls[maxn*20], rs[maxn*20], sumv[maxn*20], root[maxn];
void build(int &x,int l,int r)
{
x=++cnt;
if(l==r)return;
if(mid>=l) build(lson, l,mid);
if(r>mid) build(rson,mid+1,r);
}
int update(int x,int l,int r,int k,int delta)
{
int oo=++cnt;
ls[oo]=ls[x], rs[oo]=rs[x], sumv[oo]=sumv[x]+delta;
if(l==r) return oo;
if(k<=mid) ls[oo]=update(lson,l,mid,k,delta);
else rs[oo]=update(rson,mid+1,r,k,delta);
return oo;
}
int query(int u,int v,int l,int r,int L,int R)
{
if(l>=L&&r<=R) return sumv[v]-sumv[u];
int tmp=0;
if(L<=mid) tmp+=query(ls[u],ls[v],l,mid,L,R);
if(R>mid) tmp+=query(rs[u],rs[v],mid+1,r,L,R);
return tmp;
}
int main()
{
// setIO("input");
int n,q,i,a,l,r;
scanf("%d",&n);
for(i=1;i<=n;++i)
{
scanf("%d",&a);
root[i]=update(root[i-1],1,inf,a,a);
}
scanf("%d",&q);
while(q--)
{
scanf("%d%d",&l,&r);
int mx=0,pos=0,sum;
while(1)
{
sum=query(root[l-1],root[r],1,inf,mx+1,pos+1);
if(sum<=0) break;
mx=pos+1, pos+=sum;
}
printf("%d\n",pos+1);
}
return 0;
}
BZOJ 4408: [Fjoi 2016]神秘数 主席树 + 神题的更多相关文章
- BZOJ 4408: [Fjoi 2016]神秘数 [主席树]
传送门 题意: 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},8无法表示为集合S的子集的和,故集合S的神秘数为8.现给定n个正整数a[1]. ...
- Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 177 Solved: 128[Submit][Status ...
- BZOJ 4408: [Fjoi 2016]神秘数 可持久化线段树
4408: [Fjoi 2016]神秘数 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 Description 一个可重复数字集 ...
- BZOJ 4408: [Fjoi 2016]神秘数
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 464 Solved: 281[Submit][Status ...
- bzoj 4408: [Fjoi 2016]神秘数 数学 可持久化线段树 主席树
https://www.lydsy.com/JudgeOnline/problem.php?id=4299 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1 ...
- ●BZOJ 4408 [Fjoi 2016]神秘数
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 题解: 主席树 首先,对于一些数来说, 如果可以我们可以使得其中的某些数能够拼出 1- ...
- BZOJ4408&4299[Fjoi 2016]神秘数——主席树
题目描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 1 2 = 1+1 3 = 1+1+1 4 = 4 5 = 4+1 6 = ...
- 【bzoj4408】[Fjoi 2016]神秘数 主席树
题目描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1+13 = 1+1+14 = 45 = 4+16 = 4+1+1 ...
- 4408: [Fjoi 2016]神秘数
4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 452 Solved: 273 [Submit][Stat ...
随机推荐
- C#之委托(一)
1,什么是委托 简单来说,就是代码在恰当的时间执行一段操作.代码不需要操作的细节.举个例子,遗嘱为例.一般来说遗嘱是在某人去世之前写好,然后把它放发到一个安全的地方,去世之后然后律师会执行遗嘱中的指令 ...
- charles_02_模拟弱网测试
前言 用户使用app的场景是多变的,不一定稳定在WiFi或者4G网络下.大多数用户会在地铁.电梯等弱网情况下使用app,这些弱网情况下app常会出现一些数据丢失.闪退.页面展示不友好等情况.在测试过程 ...
- 005/搭建fabric环境(一)
一.安装虚拟机VMware 参考博客:https://blog.csdn.net/u013142781/article/details/50529030 Step1:下载ubuntu镜像 (约1.8G ...
- python+selenium文本框对象以及按钮对象操作
文本框对象 from selenium import webdriverfrom time import sleep driver = webdriver.Firefox() # 指定和打开浏览器ur ...
- 028 (H5*) 商城实战
目录: 正文: 1:创建项目 介绍 ESlintESLint 是一个ECMAScript/JavaScript 语法规则和代码风格的检查工具,它的目标是保证代码的一致性和避免错误. utit test ...
- Java中获取大小:length、length()、size()
1. java 中的 length 属性是针对数组说的,比如说你声明了一个数组,想知道这个数组的长度则用到了 length 这个属性. 2. java 中的 length() 方法是针对字符串说的,如 ...
- Reactjs 列表优化的一些心得
前言 在应用开发中,列表是我们使用频率非常高的一种展现形式,在reactjs项目中更是如此.无处不在的使用更是需要我们小心触发性能瓶颈的深水炸弹. 下面就我最近的总结出的几点心得分享给大家,有什么问题 ...
- mysql事务的特性?
1.原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执 行. 2.一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的 ...
- HDU 4014 Jimmy’s travel plan(图计数)
Jimmy’s travel plan Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Oth ...
- Python 函数知识总汇
函数在一个程序起到很重要的作用,那么如何学好函数呢,那函数有什么内容的,总结一下函数的知识归类 1,函数定义 def 函数名(): print("...") 2,函数返回值 re ...