【洛谷4587】 [FJOI2016]神秘数(主席树)
传送门
Solution
发现题目给出的一些规律,emm,如果我们新凑出来的一个数,那么后面一个数一定是\(sum+1\)。
于是就可以主席树随便维护了!
代码实现
#include<bits/stdc++.h>
using namespace std;
inline int gi(){int x;scanf("%d",&x);return x;}
const int N=100010;
int rt[N],tot;
int n,a[N];
struct node
{
int ls,rs,val;
}t[N*200];
void modify(int&x,int l,int r,int pos)
{
t[++tot]=t[x];
x=tot;
t[x].val+=pos;
if(l==r)return;
int mid=(l+r)>>1;
if(pos<=mid)modify(t[x].ls,l,mid,pos);
else modify(t[x].rs,mid+1,r,pos);
}
int query(int x,int y,int l,int r,int pos)
{
if(l==r)return t[y].val-t[x].val;
int mid=(l+r)>>1;
if(pos<=mid)return query(t[x].ls,t[y].ls,l,mid,pos);
else return query(t[x].rs,t[y].rs,mid+1,r,pos)+t[t[y].ls].val-t[t[x].ls].val;
}
int main()
{
n=gi();
for(int i=1;i<=n;i++)a[i]=gi();
for(int i=1;i<=n;i++)
{
rt[i]=rt[i-1];
modify(rt[i],1,1e9,a[i]);
}
int m=gi();
while(m--)
{
int l=gi(),r=gi(),ans=0;
while(ans<1e9)
{
int sum=query(rt[l-1],rt[r],1,1e9,ans+1);
if(sum==ans)break;
ans=sum;
}
printf("%d\n",ans+1);
}
return 0;
}
【洛谷4587】 [FJOI2016]神秘数(主席树)的更多相关文章
- 洛谷P4587 [FJOI2016]神秘数(主席树)
题面 洛谷 题解 考虑暴力,对于询问中的一段区间\([l,r]\),我们先将其中的数升序排序,假设当前可以表示出\([1,k]\)目前处理\(a_i\),假如\(a_i>k+1\),则答案就是\ ...
- 洛谷 P4587 [FJOI2016]神秘数
大鸽子 llmmkk 正在补8.3号咕掉的题 时隔两个月,再看到这道题,我又是一脸懵,这种思维的培养太重要了 链接: P4587 题意: 给出 \(n\) 个点的序列,\(m\) 次询问区间神秘数. ...
- P4587 [FJOI2016]神秘数(主席树)
题意:给出1e5个数 查询l,r区间内第一个不能被表示的数 比如1,2,4可以用子集的和表示出[1,7] 所以第一个不能被表示的是8 题解:先考虑暴力的做法 把这个区间内的数字按从小到大排序后 从前往 ...
- LUOGU P4587 [FJOI2016]神秘数(主席树)
传送门 解题思路 如果区间内没有\(1\),那么答案就为\(1\),从这一点继续归纳.如果区间内有\(x\)个\(1\),设区间内\([2,x+1]\)的和为\(sum\),如果\(sum=0\),那 ...
- [[FJOI2016]神秘数][主席树]
明白之后 5min 就写好了-自闭- 这题的题意是问你 \([L,R]\) 区间的数字不能构成的数字的最小值- 首先考虑 如果 \([1,x]\) 可以被表示 那么加入一个 \(a_i\) 显然 \( ...
- BZOJ 4408: [Fjoi 2016]神秘数 [主席树]
传送门 题意: 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},8无法表示为集合S的子集的和,故集合S的神秘数为8.现给定n个正整数a[1]. ...
- 洛谷P2617 Dynamic Ranking(主席树,树套树,树状数组)
洛谷题目传送门 YCB巨佬对此题有详细的讲解.%YCB%请点这里 思路分析 不能套用静态主席树的方法了.因为的\(N\)个线段树相互纠缠,一旦改了一个点,整个主席树统统都要改一遍...... 话说我真 ...
- 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 ...
- 2018.09.14 洛谷P3567 [POI2014]KUR-Couriers(主席树)
传送门 简单主席树啊. 但听说有随机算法可以秒掉%%%(本蒟蒻并不会) 直接维护值域内所有数的出现次数之和. 当这个值不大于区间总长度的一半时显然不存在合法的数. 这样在主席树上二分查值就行了. 代码 ...
随机推荐
- mysql cmd 无法登录
第一次折腾mysql诉苦记 版本注明: mysql 5.7.21 本地部署mysql,配置完成后(配置没有问题) cmd命令连接mysql: mysql -uroot -p 提示: ERROR 104 ...
- hehe,网易邮箱已经流氓到这个地步了
网易邮箱现在感觉作死,申请个邮箱还要下载你的APP,好,你牛逼,再见. 这是态度的问题. 最近丢了5亿的用户信息死不承认,撞库能把密保问题给撞出来? 如果真是撞库的话,丁三石养猪也已经感染口蹄疫了吧.
- Viewer.js 是一款强大的 jQuery 图像浏览插件。
https://blog.csdn.net/qq_29132907/article/details/80136023 一.效果图 二.代码<!DOCTYPE html><html ...
- canvas 实现微信小游戏
var canvas = document.getElementById('canvas'); var cxt = canvas.getContext('2d'); var timer; var iS ...
- lambda表达式和表达式树(深入理解c#)
1.Lambda形式 1). Lambda表达式最冗长的形式: (显式类型的参数列表)=>{语句} 2). 大多数时候,都可以用一个表达式来表示主体,该表达式的值是Lambda的结果,在这些情况 ...
- GOAP
市面上Unity人工智能的书籍基本上都是介绍这几个方面: AI角色的自主移动 --- 操控行为, 单体,小队,群体的行为. 我之前的文章 Unity Movement AI (一) , Unity M ...
- vue导航栏实时获取URL设置当前样式,刷新也存在!
很low 别喷, template代码: <div class="tab-itme"> <ul @click="clickit()"> ...
- docker 加速器配置目录
centos 7 : /lib/systemd/system/docker.service
- denyhost部署
部署 tar xzf DenyHosts-2.6.tar.gz -C /uc cd /uc/DenyHosts-2.6 python setup.py install running install ...
- 解决编译错误:cc: Internal error: Killed (program cc1)
错误现象: cc: Internal error: Killed (program cc1) ... 大体上是因为内存不足,临时使用交换分区来解决吧 sudo mkswap /swapfile sud ...