题目链接

记mx为最大的满足1~mx都能组成的数。

考虑当前能构成1~v中的所有数,再加入一个数x,若x>v+1,则mx=v,x不会产生影响;否则x<=v+1,则新的mx=x+v。

对于区间[l,r]的询问,模拟这个过程。假设当前答案为v,查询[l,r]中值在[1,v+1]中的数的和sum,若sum==v,即不存在v+1,break;否则v加上这些v+1的和即v=sum,继续。

用主席树实现。v每次至少增加一倍(好像这么说不恰当,每次加的数至少是上一个数+1?),所以复杂度\(O(n\log n\log a)\)。

为什么跑的比较慢呢。。

//38224kb	2860ms
#include <cstdio>
#include <cctype>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 300000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
const int N=1e5+5; int A[N],root[N];
char IN[MAXIN],*SS=IN,*TT=IN;
struct Tree
{
#define S N*31//loga not logn && 31 not 30...
#define lson son[x][0]
#define rson son[x][1]
int tot,sum[S],son[S][2]; inline void Insert(int x,int &y,int l,int r,int p)
{
sum[y=++tot]=sum[x]+p;
if(l==r) return;
int m=l+r>>1;
if(p<=m) son[y][1]=rson, Insert(lson,son[y][0],l,m,p);
else son[y][0]=lson, Insert(rson,son[y][1],m+1,r,p);
}
int Query(int x,int y,int l,int r,int R)
{
if(r<=R) return sum[y]-sum[x];
int m=l+r>>1;
if(m<R) return sum[son[y][0]]-sum[lson]+Query(rson,son[y][1],m+1,r,R);
else return Query(lson,son[y][0],l,m,R);
}
}T; inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
} int main()
{
int n=read(); int R=1;
for(int i=1; i<=n; ++i) R+=(A[i]=read());
for(int i=1; i<=n; ++i) T.Insert(root[i-1],root[i],1,R,A[i]);
for(int m=read(),l,r,ans,sum; m--; )
{
l=read(),r=read(),ans=0;
while(ans<(sum=T.Query(root[l-1],root[r],1,R,ans+1))) ans=sum;
printf("%d\n",ans+1);
}
return 0;
}

BZOJ.4299.Codechef FRBSUM(主席树)的更多相关文章

  1. bzoj4408 [Fjoi 2016]神秘数 & bzoj4299 Codechef FRBSUM 主席树+二分+贪心

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=4299 https://lydsy.com/JudgeOnline/problem.php?id ...

  2. bzoj 4299 Codechef FRBSUM

    定义一个集合的神秘数为不能表示成这个集合的某个子集和的最小正整数,给一个数列,多次求区间神秘数 $n \leq 100000$ sol: 考虑这个神秘数的性质,可以发现,如果神秘数是 $x$,那么 $ ...

  3. BZOJ4299: Codechef FRBSUM(主席树)

    题意 题目链接 数集S的ForbiddenSum定义为无法用S的某个子集(可以为空)的和表示的最小的非负整数. 例如,S={1,1,3,7},则它的子集和中包含0(S’=∅),1(S’={1}),2( ...

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

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

  5. 4299: Codechef FRBSUM

    4299: Codechef FRBSUM https://www.lydsy.com/JudgeOnline/problem.php?id=4299 分析: 主席树. https://blog.se ...

  6. BZOJ 4556(后缀数组+主席树求前驱后继+二分||后缀数组+二分+可持久化线段树)

    换markdown写了.. 题意: 给你一个1e5的字符串,1e5组询问,求\([l_1,r_1]\)的所有子串与\([l_2,r_2]\)的lcp 思路: 首先可以发现答案是具有单调性的,我们考虑二 ...

  7. BZOJ 3524: [Poi2014]Couriers [主席树]

    3524: [Poi2014]Couriers Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 1892  Solved: 683[Submit][St ...

  8. bzoj 4012: [HNOI2015]开店 主席树

    Description 风见幽香有一个好朋友叫八云紫,她们经常一起看星星看月亮从诗词歌赋谈到 人生哲学.最近她们灵机一动,打算在幻想乡开一家小店来做生意赚点钱.这样的 想法当然非常好啦,但是她们也发现 ...

  9. bzoj 4826: [Hnoi2017]影魔 [主席树 单调栈]

    4826: [Hnoi2017]影魔 题意:一个排列,点对\((i,j)\),\(p=max(i+1,j-1)\),若\(p<a_i,a_j\)贡献p1,若\(p\)在\(a_1,a_2\)之间 ...

随机推荐

  1. 用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建四:配置springmvc

    在用IntelliJ IDEA 开发Spring+SpringMVC+Mybatis框架 分步搭建三:配置spring并测试的基础上 继续进行springmvc的配置 一:配置完善web.xml文件

  2. Linux 配置vim编辑器

    最终效果 步骤1.下载NERDTree插件安装包(vim目录插件) https://www.vim.org/scripts/script.php?script_id=1658 步骤2.在家目录创建 . ...

  3. 第三十七节、人脸检测MTCNN和人脸识别Facenet(附源码)

    在说到人脸检测我们首先会想到利用Harr特征提取和Adaboost分类器进行人脸检测(有兴趣的可以去一看这篇博客第九节.人脸检测之Haar分类器),其检测效果也是不错的,但是目前人脸检测的应用场景逐渐 ...

  4. Go-常用库的介绍

    一.Go常用包介绍  fmt.它实现了格式化的输入输出操作,其中的fmt.Printf()和fmt.Println()是开 发者使用最为频繁的函数.  io.它实现了一系列非平台相关的IO相关接口 ...

  5. crontab 误删恢复

    某台服务器某账号的 crontab 任务被清空,原因不明.同时,该服务器上的 crontab 任务备份未开启.故思考如何恢复 crontab 任务. 经查,CentOS 系统的 crontab 任务的 ...

  6. Mybatis-PageHelper

    pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="htt ...

  7. Groovy 设计模式 -- 享元模式

    Flyweight Pattern 享元模式, 将对象的相同属性, 以节省内存为目的,存储为一份公共对象, 所有对象共用此分对象. The Flyweight Pattern is a pattern ...

  8. 尝试去读SQLMAP源码(一)

    本人python 小菜比 一枚.拜读业界典范~~ 阅读sqlmap 的版本是1.1.6,目前应该是最新版. sqlmap.py 脚本中 72~83 def modulePath(): "&q ...

  9. SpringBoot中Application开启与关闭

    0.声明 缘由:没有学过或者没有经历SpringBoot的Application运行机制的话,一定会好奇,博主为啥会写一篇关闭开启的博文,是不是好幼稚?(/o(╥﹏╥)o),待我娓娓道来......为 ...

  10. php页面编码设置

    php的header来定义一个php页面为utf编码或GBK编码 php页面为utf编码 header("Content-type: text/html; charset=utf-8&quo ...