正解:主席树

解题报告:

先放下传送门QAQ

首先可以先思考如果只有一组询问,怎么解决

可以这么想,最开始一个数也麻油的时候能表示的最大的数是0嘛

然后先排个序,按顺序每次新加入一个数x,设加入这个数之前能表示的最大的数是y

首先显然的是如果x>y+1,y+1一定不能被表示出来,就GG了

如果x<=y+1,那么能表示出来的最大的数就一定是x+y,就更新一下y+=x

从上面这个式子我们可以得到实际上每加入一个数,当可以继续下去的时候其实就是y=∑x

然后现在考虑是有多组询问的鸭怎么搞呢QAQ?

可以考虑这样子:对于当前的x,查询<=x的数的和

那显然就是线段树,存[l,r]的和,非常基础的套路辣

然后因为是问的区间内,所以用个主席树就好

然后就麻油啦啦啦!

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define ll long long
#define gc getchar()
#define t(i) edge[i].to
#define w(i) edge[i].wei
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define e(i,x) for(ri i=head[x];~i;i=edge[i].nxt) const int N=+,inf=1e9,M=1e8;
int n,m,rt[N],nod_cnt;
bool gdgs=;
struct chtr{int ls,rs,dat;}tr[M]; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il int modify(ri x,ri l,ri r,ri dat)
{
ri nw=++nod_cnt;
tr[nw]=tr[x];tr[nw].dat+=dat;if(l==r)return nw;
if(dat<=((l+r)>>))tr[nw].ls=modify(tr[x].ls,l,(l+r)>>,dat);else tr[nw].rs=modify(tr[x].rs,((l+r)>>)+,r,dat);return nw;
}
il int query(int x1,int x2,int l,int r,int dat)
{
if(l==r)return tr[x2].dat-tr[x1].dat;
if(dat<=((l+r)>>))return query(tr[x1].ls,tr[x2].ls,l,(l+r)>>,dat);return tr[tr[x2].ls].dat-tr[tr[x1].ls].dat+query(tr[x1].rs,tr[x2].rs,((l+r)>>)+,r,dat);
} int main()
{
// freopen("4587.in","r",stdin);freopen("4587.out","w",stdout);
n=read();rp(i,,n)rt[i]=modify(rt[i-],,inf,read());
m=read();while(m--){int l=read(),r=read(),as=;while(gdgs){int tmp=query(rt[l-],rt[r],,inf,as+);if(tmp==as)break;as=tmp;}printf("%d\n",as+);}
return ;
}

这儿是代码QwQ!

洛谷P4587 神秘数 [FJOI2016] 主席树的更多相关文章

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

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

  2. 洛谷P4587 [FJOI2016]神秘数(主席树)

    题面 洛谷 题解 考虑暴力,对于询问中的一段区间\([l,r]\),我们先将其中的数升序排序,假设当前可以表示出\([1,k]\)目前处理\(a_i\),假如\(a_i>k+1\),则答案就是\ ...

  3. 【洛谷4587】 [FJOI2016]神秘数(主席树)

    传送门 BZOJ 然而是权限题 洛谷 Solution 发现题目给出的一些规律,emm,如果我们新凑出来的一个数,那么后面一个数一定是\(sum+1\). 于是就可以主席树随便维护了! 代码实现 #i ...

  4. 220722 T4 求和 /P4587 [FJOI2016]神秘数 (主席树)

    好久没打主席树了,都忘了怎么用了...... 假设我们选了一些数能构成[0,x]范围内的所有值,下一个要加的数是k(k<=x+1),那么可以取到[0,x+k]内的所有取值,所以有一种做法: 对于 ...

  5. [BZOJ4408&&BZOJ4299][FJOI2016 && Codechef]神秘数&&FRBSUM(主席树)

    4299: Codechef FRBSUM Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 550  Solved: 351[Submit][Statu ...

  6. 洛谷P2617 Dynamic Ranking(主席树,树套树,树状数组)

    洛谷题目传送门 YCB巨佬对此题有详细的讲解.%YCB%请点这里 思路分析 不能套用静态主席树的方法了.因为的\(N\)个线段树相互纠缠,一旦改了一个点,整个主席树统统都要改一遍...... 话说我真 ...

  7. BZOJ4408: [Fjoi 2016]神秘数【主席树好题】

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

  8. 2018.09.14 洛谷P3567 [POI2014]KUR-Couriers(主席树)

    传送门 简单主席树啊. 但听说有随机算法可以秒掉%%%(本蒟蒻并不会) 直接维护值域内所有数的出现次数之和. 当这个值不大于区间总长度的一半时显然不存在合法的数. 这样在主席树上二分查值就行了. 代码 ...

  9. BZOJ4408 [Fjoi 2016]神秘数 【主席树】

    题目链接 BZOJ4408 题解 假如我们已经求出一个集合所能凑出连续数的最大区间\([1,max]\),那么此时答案为\(max + 1\) 那么我们此时加入一个数\(x\),假若\(x > ...

随机推荐

  1. Spring Security 认证流程

    请求之间共享SecurityContext原因:

  2. 使用Ajax异步上传图片的方法(html,javascript,php)

    前两天项目中需要用到异步上传图片和显示上传进度的功能,于是找了很多外国的文章,翻山越岭地去遇上各种坑,这里写篇文章记录一下. HTML <form id="fileupload-for ...

  3. java-信息安全(六)-基于RSA理解数字签名示例

    概述 java-信息安全(四)-数据签名.数字证书 java-信息安全(五)-非对称加密算法RSA RSA工具类 使用java-信息安全(五)-非对称加密算法RSA项目中RSACoder 数字签名理解 ...

  4. android TV选中时高亮凸显效果

    链接: http://pan.baidu.com/s/1pLjAFQ7 密码: xb8g <ignore_js_op> 360手机助手截图0410_18_02_01.png (335.64 ...

  5. win7怎么打开加锁文件夹

    在windows 7下,C:\Documents and Settings文件夹是默认锁定的,很多时候要进入进行解除锁定,根据本人实践的经历略作介绍. 1.打计算机,进入c盘文件夹,2.分别点击“组织 ...

  6. nginx 反向代理 Nginx 502 Bad Gateway

    查看错误日志: 摘要: nginx反向代理出现502错误 通过查看日志发现错误信息 2018/01/10 17:58:20 [crit] 8156#0: *1 connect() to 127.0.0 ...

  7. 九度OJ 1067 n的阶乘 (模拟)

    题目1067:n的阶乘 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:5666 解决:2141 题目描写叙述: 输入一个整数n,输出n的阶乘 输入: 一个整数n(1<=n<=2 ...

  8. linux dd指令

    ghost和g4l 安装操作系统,速度太慢,整个过程太冗长乏味了. 安装过程中,需要回答若干问题,系统需要安装无数个软件,创建和写入无数的文件.因为涉及到大量的文件定位和读写,速度一定是快不起来的. ...

  9. Excel 函数集(使用过的)

    1.   SUBTOTAL函数  筛选结果求和 SUBTOTAL(函数编号, 区域) 函数编号 为 1 到 11(包含隐藏值)或 101 到 111(忽略隐藏值)之间的数字,指定使用何种函数在数据清单 ...

  10. 用SpannableString打造绚丽多彩的文本显示效果

    extends:http://www.jianshu.com/p/84067ad289d2 引语 TeXtView大家应该都不陌生,文本展示控件嘛! 就用TextView显示普普通通的文本,OK,很简 ...