考虑处理单组询问
一开始ans=1,每次统计<=ans的数的和sum,若sum>=ans,就用sum+1更新ans
最坏情况下,ans的更新是1,2,3,5,8….是斐波拉契数列
所以ans最多更新log次
用主席树资瓷统计区间<=ans数的和
每次询问log^2
总复杂度mlog^2

code:

#include<set>
#include<map>
#include<deque>
#include<queue>
#include<stack>
#include<cmath>
#include<ctime>
#include<bitset>
#include<string>
#include<vector>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<climits>
#include<complex>
#include<iostream>
#include<algorithm>
#define ll long long
using namespace std;inline void read(int &x)
{char c; while(!((c=getchar())>='0'&&c<='9'));x=c-'0';while((c=getchar())>='0'&&c<='9') (x*=10)+=c-'0';
}
const int maxn = 110000;int n,m,u;
int a[maxn];struct segment{int lc,rc,c;}seg[maxn*40]; int cnt,root[maxn];
int loc;
void upd(int &x,const int l,const int r)
{if(!x) x=++cnt;seg[x].c+=loc;if(l==r) return;int mid=l+r>>1;if(loc<=mid) upd(seg[x].lc,l,mid);else upd(seg[x].rc,mid+1,r);
}
void merge(int &x,int y)
{if(!y) return;if(!x) { x=y; return; }seg[x].c+=seg[y].c;merge(seg[x].lc,seg[y].lc);merge(seg[x].rc,seg[y].rc);
}
int ans,temp;
void query(int x,int y,const int l,const int r)
{if(!y) return;if(r<=loc) { temp+=seg[y].c-seg[x].c; return; }if(loc<l) return;int mid=l+r>>1;query(seg[x].lc,seg[y].lc,l,mid);query(seg[x].rc,seg[y].rc,mid+1,r);
}int main()
{read(n); for(int i=1;i<=n;i++) {read(a[i]);if(u<a[i]) u=a[i];} u++;for(int i=1;i<=n;i++){loc=a[i];upd(root[i],1,u);merge(root[i],root[i-1]);}read(m);while(m--){int l,r; read(l); read(r); --l;ans=0,temp=0;while(ans<=temp){ans=temp+1; temp=0; loc=ans;query(root[l],root[r],1,u);}printf("%d\n",ans);}return 0;
}

BZOJ4408: [Fjoi 2016]神秘数相关推荐

  1. 4408: [Fjoi 2016]神秘数

    4408: [Fjoi 2016]神秘数 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 452  Solved: 273 [Submit][Stat ...

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

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

  3. 【bzoj4408】[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 = ...

  4. ●BZOJ 4408 [Fjoi 2016]神秘数

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 题解: 主席树 首先,对于一些数来说, 如果可以我们可以使得其中的某些数能够拼出 1- ...

  5. BZOJ44084299[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 = ...

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

    题目描述 http://www.lydsy.com/JudgeOnline/problem.php?id=4408 题目大意:求最小不能被一段区间中某些数的和表示的数.(还是看题面吧) 思路 可持久化 ...

  7. BZOJ4408:[FJOI2016]神秘数

    浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.p ...

  8. 【FJOI2016】【BZOJ4408】神秘数

    [题目链接] BZOJ4408(权限题) [前置技能] 主席树 [题解] 首先先考虑一种时间复杂度为O(QNlogN)O(QNlogN)O(QNlogN)的暴力做法:将所有数按从小到大排序,考虑做到第 ...

  9. [Bzoj4408]神秘数(主席树)

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

最新文章

  1. 最新综述:激光雷达感知深度的域适应方法
  2. android 线程 wait notify
  3. win10不能上网问题的解决办法
  4. 【机器学习入门到精通系列】蒙特卡罗方法简介和代码演示
  5. python3安装-mac python3 轻松安装教程
  6. 第一篇博客——用来写自己
  7. 找出存在性能问题的sql语句
  8. presto 设置mysql连接,Apache Presto配置设置
  9. 【渝粤教育】国家开放大学2018年秋季 0184-21T行政职业能力 参考试题
  10. python连接SQLServer数据库创建数据表同时为每个字段加上对应的中文注释信息
  11. ENVI中FLAASH大气校正中的Atmosphere Model选项各含义
  12. 汽车应急启动电源,拉杆音箱,蓝牙音响升压芯片合集,DCDC大功率外置MOS升压芯片10W,200W,400W
  13. css3实现缺角四边形_CSS3实现缺角矩形与折角矩形以及缺角边框代码实例
  14. MikroTik路由器配置
  15. Luogu 1606 [USACO07FEB]白银莲花池Lilypad Pond
  16. 如何让传统行业的电商引发口碑效应并营销
  17. 家庭理财,轻松记账修改收支记录这样操作
  18. html怎么实现计算bmi,利用Javascript实现BMI计算器
  19. 广东惠州港口吞吐量稳中有升
  20. Botnet趋势典型攻击链

热门文章

  1. Docker容器已正式支持苹果M1Mac电脑
  2. 如何使用TestFlight发布和安装测试版的app
  3. 为什么你只需要CD音质:16bits, 44.1kHz的意义
  4. Ubuntu无法ping通百度
  5. Neo4j中的OGM(Object Graph Mapping)类似于ORM(对象关系映射)
  6. 格力(GREE)家用移动空调免安装一体机空调KY-23NK 清灰拆装教程
  7. Vue created() 里同步
  8. 干货|可视化设计:百度地图路线
  9. spdlog linux编译出错,spdlog在工厂方法上崩溃
  10. 01005封装的优缺点