题链:

主席树
首先,对于一些数来说,
如果可以我们可以使得其中的某些数能够拼出 1~ret
那么此时的ANS(神秘数)= ret+1
然后考虑,如果此时存在另一个数小于等于 ANS,(设该数为 x)
则一定可以在原来的1~ret的基础上拼出 1~ret+x
即 ANS 可以更新为 ret+x+1
所以具体的操作就是:
每次查询区间内小于ANS的数的和(SUM),然后如果SUM大于ANS,则更新ANS为SUM+1。
不断上述操作直到SUM<ANS为止。
主席数实现在序列区间中查询权值区间的和。
代码:
  1. #include<cstdio>
  2. #include<cstring>
  3. #include<iostream>
  4. #include<algorithm>
  5. #define MAXN 100500
  6. using namespace std;
  7. int A[MAXN],tmp[MAXN];
  8. int N,M,tnt;
  9. struct CMT{
  10. long long sum[MAXN*20];
  11. int rt[MAXN],ls[MAXN*20],rs[MAXN*20],sz;
  12. void Insert(int v,int &u,int l,int r,int p){
  13. u=++sz; ls[u]=ls[v]; rs[u]=rs[v];
  14. sum[u]=sum[v]; sum[u]+=tmp[p];
  15. if(l==r) return;
  16. int mid=(l+r)>>1;
  17. if(p<=mid) Insert(ls[v],ls[u],l,mid,p);
  18. else Insert(rs[v],rs[u],mid+1,r,p);
  19. }
  20. long long Query(int v,int u,int l,int r,int al,int ar){
  21. if(al<=l&&r<=ar) return sum[u]-sum[v];
  22. int mid=(l+r)>>1; long long ret=0;
  23. if(al<=mid) ret+=Query(ls[v],ls[u],l,mid,al,ar);
  24. if(mid<ar) ret+=Query(rs[v],rs[u],mid+1,r,al,ar);
  25. return ret;
  26. }
  27. void Build(){
  28. for(int i=1;i<=N;i++)
  29. Insert(rt[i-1],rt[i],1,tnt,A[i]);
  30. }
  31. }DT;
  32. int main(){
  33. // freopen("/home/noilinux/Documents/Code/BZOJ/4408.in","r",stdin);
  34. // printf("BEGIN.\n");
  35. scanf("%d",&N);
  36. for(int i=1;i<=N;i++)
  37. scanf("%d",&A[i]),tmp[i]=A[i];
  38. sort(tmp+1,tmp+N+1);
  39. tnt=unique(tmp+1,tmp+N+1)-tmp-1;
  40. for(int i=1;i<=N;i++)
  41. A[i]=lower_bound(tmp+1,tmp+tnt+1,A[i])-tmp;
  42. scanf("%d",&M);
  43. DT.Build(); long long ANS,ret,p;
  44. for(int i=1,l,r;ANS=0,ret=0,i<=M;i++){
  45. scanf("%d%d",&l,&r);
  46. while(ANS<ret+1){
  47. ANS=ret+1;
  48. p=upper_bound(tmp+1,tmp+tnt+1,ANS)-tmp-1;
  49. ret=DT.Query(DT.rt[l-1],DT.rt[r],1,tnt,1,p);
  50. }
  51. printf("%lld\n",ANS);
  52. }
  53. return 0;
  54. }

  

 

●BZOJ 4408 [Fjoi 2016]神秘数的更多相关文章

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

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

  2. BZOJ 4408: [Fjoi 2016]神秘数

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

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

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

  4. BZOJ 4408: [Fjoi 2016]神秘数 [主席树]

    传送门 题意: 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},8无法表示为集合S的子集的和,故集合S的神秘数为8.现给定n个正整数a[1]. ...

  5. bzoj 4408: [Fjoi 2016]神秘数 数学 可持久化线段树 主席树

    https://www.lydsy.com/JudgeOnline/problem.php?id=4299 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1 ...

  6. BZOJ 4408: [Fjoi 2016]神秘数 主席树 + 神题

    Code: #include<bits/stdc++.h> #define lson ls[x] #define mid ((l+r)>>1) #define rson rs[ ...

  7. 4408: [Fjoi 2016]神秘数

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

  8. [BZOJ4408][Fjoi 2016]神秘数

    [BZOJ4408][Fjoi 2016]神秘数 试题描述 一个可重复数字集合S的神秘数定义为最小的不能被S的子集的和表示的正整数.例如S={1,1,1,4,13},1 = 12 = 1+13 = 1 ...

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

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

随机推荐

  1. 【Swift】 iOS开发容易产生Bug的地方

    1.隐藏navigationBar(尤其是多级隐藏) 2.共用collectionView或tableView 3.继承关系下,注意覆写父类时的super方法的调用 4.关于权限的问题(相机权限,相册 ...

  2. 视图和URL配置

    视图和URL配置 实验简介 上一章里我们介绍了如何创建一个Django项目并启动Django的开发服务器.本章你将学到用Django创建动态网页的基本知识. 同时,也教会大家怎么在本地机器上建立一个独 ...

  3. 【iOS】Swift GCD-上

    尽管Grand Central Dispatch(GCD)已经存在一段时间了,但并非每个人都知道怎么使用它.这是情有可原的,因为并发很棘手,而且GCD本身基于C的API在Swift世界中很刺眼. 在这 ...

  4. 清华集训2015 V

    #164. [清华集训2015]V http://uoj.ac/problem/164 统计 描述 提交 自定义测试 Picks博士观察完金星凌日后,设计了一个复杂的电阻器.为了简化题目,题目中的常数 ...

  5. 14-TypeScript简单工厂模式

    在TypeScript中,要调用功能,通常在调用方通过实例化被调用方对象来调用相关方法,但这种实现在调用方和被调用方形成了强耦合的关系. 另外如果被调用方有种实现,在调用方需要根据场景去实例化不同的类 ...

  6. Python 列表嵌套多种实现方式

    #coding=utf-8 list=[] for i in range(1,101): list.append(i) # print(list) tempList=[] newList=[] whi ...

  7. Python内置函数(22)——list

    英文文档: class list([iterable]) Rather than being a function, list is actually a mutable sequence type, ...

  8. groovy入门(2-1)Groovy的Maven插件安装:Plugin execution not covered by lifecycle configuration

    参考链接:http://www.cnblogs.com/rightmin/p/4945797.html 1.引入groovy的jar包 2.引入groovy编译插件 3.遇到问题 Plugin exe ...

  9. ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查

    介绍 EntityFrameworkCore EF core 是一个轻量级的,可扩展的EF的跨平台版本.对于EF而言 EF core 包含许多提升和新特性,同时 EF core 是一个全新的代码库,并 ...

  10. jsp连接书库DatabaseUtil类

    public class DatabaseUtil { private static String driver = ConfigManager.getProperties("driver& ...