(bzoj4408)[FJOI2016]神秘数(可持久化线段树)

bzoj luogu

对于一个区间的数,排序之后从左到右每一个数扫

如果扫到某个数a时已经证明了前面的数能表示[1,x],那么分情况:

a>x+1,不能继续表示下去,答案就是x+1

否则表示区间变为[1,x+a]。

用主席树上二分优化这个过程。

 1 #include<cstdio>
2 #include<algorithm>
3 using namespace std;
4 const int N=100069;
5 const int orz_phy=998244353;
6 #define cint const int
7 template<typename TP> inline void read(TP &_t)
8 {
9 TP _r=0,_f=1;char _c=getchar();
10 while(_c<'0'||_c>'9'){if(_c=='-')_f=-1;_c=getchar();}
11 while(_c>='0'&&_c<='9'){_r=_r*10+_c-'0';_c=getchar();}
12 _t=_r*_f;
13 }
14 int n,a[N];
15
16 int rt[N];
17 struct chairman
18 {
19 int s[N*88],son[N*88][2],ct;
20 void ins(cint pp,int &px,cint pl,cint pr,cint x)
21 {
22 px=++ct,s[px]=s[pp]+x;
23 if(pl==pr) return;
24 int mi=(pl+pr)>>1;
25 if(x<=mi) son[px][1]=son[pp][1],ins(son[pp][0],son[px][0],pl,mi,x);
26 else son[px][0]=son[pp][0],ins(son[pp][1],son[px][1],mi+1,pr,x);
27 }
28 int query(cint pp,cint px,cint pl,cint pr,cint l,cint r)
29 {
30 if(l<=pl&&pr<=r) return s[px]-s[pp];
31 int mi=(pl+pr)>>1;
32 int ret=0;
33 if(l<=mi) ret+=query(son[pp][0],son[px][0],pl,mi,l,r);
34 if(r>mi) ret+=query(son[pp][1],son[px][1],mi+1,pr,l,r);
35 return ret;
36 }
37 }ct;
38
39 int T,li,ri;
40 signed main()
41 {
42 read(n);
43 for(int i=1;i<=n;i++) read(a[i]),ct.ins(rt[i-1],rt[i],1,1000000000,a[i]);
44 read(T);
45 while(T--)
46 {
47 read(li),read(ri);
48 int ans=1,tmp=0;
49 while(orz_phy)
50 {
51 if((tmp=ct.query(rt[li-1],rt[ri],1,1000000000,1,ans))>=ans) ans=tmp+1;
52 else break;
53 }
54 printf("%d\n",ans);
55 }
56 return 0;
57 }

(bzoj4408)[FJOI2016]神秘数(可持久化线段树)的更多相关文章

  1. 【BZOJ-4408】神秘数 可持久化线段树

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 475  Solved: 287[Submit][Status ...

  2. BZOJ 4408 FJOI2016 神秘数 可持久化线段树

    Description 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1+13 = 1+1+14 = 45 = 4+16 ...

  3. Bzoj 4408: [Fjoi 2016]神秘数 可持久化线段树,神题

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 177  Solved: 128[Submit][Status ...

  4. BZOJ 4408: [Fjoi 2016]神秘数 可持久化线段树

    4408: [Fjoi 2016]神秘数 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 Description 一个可重复数字集 ...

  5. 51Nod 1175 区间中第K大的数 (可持久化线段树+离散)

    1175 区间中第K大的数 基准时间限制:1 秒 空间限制:131072 KB 分值: 160 难度:6级算法题   一个长度为N的整数序列,编号0 - N - 1.进行Q次查询,查询编号i至j的所有 ...

  6. [bzoj4408][Fjoi2016]神秘数

    Description 一个可重复数字集合$S$的神秘数定义为最小的不能被$S$的子集的和表示的正整数. 例如$S={1,1,1,4,13}$, $1=1$, $2=1+1$, $3=1+1+1$, ...

  7. 题解【bzoj4587 & bzoj4408 [FJOI2016]神秘数】

    Description \(n\) 个数的序列,每次询问一个区间,求最小的一个数使得不能用这个区间中的数之和表示. \(n \leq 10^5, \sum a_i \leq 10^9\) 这两个题一个 ...

  8. 【BZOJ4408】[FJOI2016]神秘数(主席树)

    [BZOJ4408][FJOI2016]神秘数(主席树) 题面 BZOJ 洛谷 题解 考虑只有一次询问. 我们把所有数排个序,假设当前可以表示出的最大数是\(x\). 起始\(x=0\). 依次考虑接 ...

  9. 【Codechef FRBSUM】【FJOI2016】【BZOJ4299】【BZOJ 4408】 可持久化线段树

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 475  Solved: 287[Submit][Status ...

随机推荐

  1. hbuilderx快捷键、回到上一步、回到上次编辑处

    快捷键:Alt + 左/右箭头  其他快捷键:

  2. docker安装、基本使用、实战(测试必备)

    Docker概念.作用.术语 一张超级形象的图 看到这张图,大家会想到什么? 可以这么理解:大海是操作系统,鲸鱼是Docker,集装箱是在Docker 运行的容器! 概念 百度百科:Docker 是一 ...

  3. 华为eNSP的防火墙(USG6000V)如何使用Web界面登入

    文章目录 华为eNSP的防火墙(USG6000V)如何使用Web界面登入 前言 一.使用步骤 1.导入USG6000V的镜像包 总结 前言 在华为的eNSP的模拟器上如何使用Web界面去管理与使用模拟 ...

  4. [c/c++]c++控制台操作(基本操作的代码)

    本文转自:http://blog.csdn.net/stude/article/details/7645056 控制台窗口界面编程控制 〇.摘要一.概述二.控制台文本窗口的一般控制步骤三.控制台窗口操 ...

  5. Windows Server 2012 R2通过命令行重置网络环境

    转至:https://jingyan.baidu.com/article/48b37f8d5d89385a646488b5.html 我们使用Windows Server 2012 R2时会遇到通过命 ...

  6. Java课程设计---浏览学生(实现根据姓名查询)

    1.修改窗口 2.在StudentDao中增加根据姓名查找的方法 public List<Student> getStudent(String name)throws SQLExcepti ...

  7. 根据文件url,下载文件到本地

    /// <summary> /// 根据文件url,下载文件到本地 /// </summary> /// <param name="fileUrl"& ...

  8. MySQL-常用的几种修改密码方法

    在MySQL中一般常规的给用户修改密码可以用到以下几种方法: 1.使用 mysqladmin命令修改密码 1 mysqladmin -u username -p password "newP ...

  9. 设置vim永久显示编号

    永久显示行号,需要我们设置配置文件,两种配置方式: 1.  /etc/vimrc   是系统范围的初始化配置 2.  -/.vimrc     个人的vim初始化配置 编辑配置文件,以个人为例: vi ...

  10. 论文翻译:2020_DCCRN: Deep Complex Convolution Recurrent Network for Phase-Aware Speech Enhancement

    论文地址:DCCRN:用于相位感知语音增强的深度复杂卷积循环网络 论文代码:https://paperswithcode.com/paper/dccrn-deep-complex-convolutio ...