#include <cstdio>
const int Maxn=;
inline void Get_Int(int &x)
{
char ch=getchar(); x=;
while (ch<'' || ch>'') ch=getchar();
while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
}
struct Node
{
Node * l,* r; int Sum;
inline void Push_Up() {Sum=l->Sum+r->Sum;}
};
Node Memory[Maxn*],* port=Memory,* null,* Root[Maxn];
int n,m,Mx,a[Maxn],l,r;
inline int Max(int x,int y) {return x>y?x:y;}
inline void Init() {null=port++; null->Sum=; null->l=null->r=null;}
inline Node * NewNode(Node * x)
{
Node * Ret=port++;
if (x==null) {Ret->l=Ret->r=null; Ret->Sum=;} else
{Ret->l=x->l,Ret->r=x->r,Ret->Sum=x->Sum;}
return Ret;
} Node * Insert(Node * Pre,int o,int l,int r,int v)
{
Node * Ret=NewNode(Pre);
if (l==r)
{
Ret->Sum+=v;
return Ret;
}
int mid=(l+r)>>;
if (v<=mid) Ret->l=Insert(Pre->l,o<<,l,mid,v); else Ret->r=Insert(Pre->r,o<<|,mid+,r,v);
Ret->Push_Up();
}
int Sum(Node * Now,int o,int l,int r,int p,int q)
{
if (Now==null) return ;
if (l==p && r<=q) return Now->Sum;
int mid=(l+r)>>;
if (q<=mid) return Sum(Now->l,o<<,l,mid,p,q);
if (p>=mid+) return Sum(Now->r,o<<|,mid+,r,p,q);
if (p<=mid && q>=mid+) return Sum(Now->l,o<<,l,mid,p,mid)+Sum(Now->r,o<<|,mid+,r,mid+,q);
}
inline int Query(int L,int R)
{
int Ret=;
while (true)
{
int t=Sum(Root[R],,,Mx,,Ret)-Sum(Root[L],,,Mx,,Ret);
if (t<Ret) return Ret; else Ret=t+;
}
return Ret;
}
int main()
{
// freopen("data.in","r",stdin);
// freopen("data.out","w",stdout);
Init();
Get_Int(n);
for (int i=;i<=n;i++) Get_Int(a[i]),Mx=Max(Mx,a[i]);
Root[]=NewNode(null);
for (int i=;i<=n;i++) Root[i]=Insert(Root[i-],,,Mx,a[i]);
Get_Int(m);
for (int i=;i<=m;i++)
{
Get_Int(l),Get_Int(r);
printf("%d\n",Query(l-,r));
}
return ;
}

C++

网上题解一堆..即找到1~Mx.那么1~Mx的Sum就都可以取到.

BZOJ上问Root讨来数据自测全A,交上去WA.

BZOJ 4408 主席数+找规律的更多相关文章

  1. POJ2402 Palindrome Numbers第K个回文数——找规律

    问题 给一个数k,给出第k个回文数  链接 题解 打表找规律,详见https://www.cnblogs.com/lfri/p/10459982.html,差别仅在于这里从1数起. AC代码 #inc ...

  2. BZOJ 4408 神秘数

    题解同各神犇的方法... #include<iostream> #include<cstdio> #include<cstring> #include<alg ...

  3. bzoj 1432 数学(找规律)

    我们可以发现所有的情况(除n=1时),都可以找到两个交叉的直线,就是第一层的那 两个线段所在的直线如图中左 那么我们以这个为准,两边对称着加直线,会得到右图,每一层是折线,且每 加一对儿就多两条线段, ...

  4. BZOJ 4001 [TJOI2015]概率论 ——找规律

    题目太神了,证明还需要用到生成函数. 鉴于自己太菜,直接抄别人的结果好了. #include <map> #include <cmath> #include <queue ...

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

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

  6. bzoj 1002 [FJOI2007]轮状病毒 高精度&&找规律&&基尔霍夫矩阵

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 2234  Solved: 1227[Submit][Statu ...

  7. BZOJ [FJOI2007]轮状病毒 (找规律)

    1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec  Memory Limit: 162 MBSubmit: 6009  Solved: 3282[Submit][Statu ...

  8. BZOJ 4706: B君的多边形 找规律

    4706: B君的多边形 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4706 Description 有一个正n多边形,我们要连接一些 ...

  9. BZOJ 1192 鬼谷子的钱袋 找规律

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1192 题目大意: 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向 ...

随机推荐

  1. STM32 ADC 测电压

    1. STM32F103 ADC 本例使用STM32F103芯片的PA1引脚测试模拟输入的电压值. 查看文档<STM32F103X.pdf>第31页,引脚定义图: 得知PA1使用ADC1的 ...

  2. 屏蔽zencart logs文件夹下不断生成的日志文件

    在根目錄下的logs文件夾中,經常生成一些錯誤文件類似myDEBUGxxxxx.log這樣的錯誤文件(而且這樣的錯誤文件由來并非網站出現什麽嚴重不可挽救的錯誤,大部分是一些未定義變量這樣的不起眼的小錯 ...

  3. for循环每次展示固定条数的数据的写法。

    第一种是一组json数据实现分页的效果,也就是每一次展示5条数据.第二种场景是每一秒展示4条数据,直到全部显示完.两种思路都做个笔记记录下. var nums = 5; //每页出现的数量 var p ...

  4. Spring 相关jar包详细介绍

    文章转自:http://blog.csdn.net/farawayhome/article/details/6623946 aspectj目录下是在Spring框架下使用aspectj的源代码和测试程 ...

  5. 实际项目中的一个angularjs 应用

    实际需求:通过下拉框,选择自己需要的类型,创建元素(要求必须是输入点击保存了才能出现对应的类型块) html代码: <div class="list-panel-data"& ...

  6. JS学习笔记--仿手机发送内容交互

    学习JS笔记----记录上课中学习的知识点,分享下老师教的内容: 1.html内容 <div id="box"> <div id="message&qu ...

  7. cp命令

    [root@www ~]# cp [-adfilprsu] 来源文件(source) 目标文件(destination) [root@www ~]# cp [options] source1 sour ...

  8. iOS开发_MVC设计模式

    MVC,是一种主流的设计模式,本博文总结一下自己对MVC的看法和理解,浅知拙见,难登大雅之堂,如有欠缺遗漏,还望各位指正. MVC是Model-View-Controller 的缩写,Model 是指 ...

  9. ssh框架文件上传下载

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. js只保留整数,向上取整,四舍五入,向下取整等函数

    1.丢弃小数部分,保留整数部分 parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3.四舍五入. Math.round(5/2) 4.向下取整 Math.f ...