1. #include <cstdio>
  2. const int Maxn=;
  3. inline void Get_Int(int &x)
  4. {
  5. char ch=getchar(); x=;
  6. while (ch<'' || ch>'') ch=getchar();
  7. while (ch>='' && ch<='') {x=x*+ch-''; ch=getchar();}
  8. }
  9. struct Node
  10. {
  11. Node * l,* r; int Sum;
  12. inline void Push_Up() {Sum=l->Sum+r->Sum;}
  13. };
  14. Node Memory[Maxn*],* port=Memory,* null,* Root[Maxn];
  15. int n,m,Mx,a[Maxn],l,r;
  16. inline int Max(int x,int y) {return x>y?x:y;}
  17. inline void Init() {null=port++; null->Sum=; null->l=null->r=null;}
  18. inline Node * NewNode(Node * x)
  19. {
  20. Node * Ret=port++;
  21. if (x==null) {Ret->l=Ret->r=null; Ret->Sum=;} else
  22. {Ret->l=x->l,Ret->r=x->r,Ret->Sum=x->Sum;}
  23. return Ret;
  24. }
  25.  
  26. Node * Insert(Node * Pre,int o,int l,int r,int v)
  27. {
  28. Node * Ret=NewNode(Pre);
  29. if (l==r)
  30. {
  31. Ret->Sum+=v;
  32. return Ret;
  33. }
  34. int mid=(l+r)>>;
  35. if (v<=mid) Ret->l=Insert(Pre->l,o<<,l,mid,v); else Ret->r=Insert(Pre->r,o<<|,mid+,r,v);
  36. Ret->Push_Up();
  37. }
  38. int Sum(Node * Now,int o,int l,int r,int p,int q)
  39. {
  40. if (Now==null) return ;
  41. if (l==p && r<=q) return Now->Sum;
  42. int mid=(l+r)>>;
  43. if (q<=mid) return Sum(Now->l,o<<,l,mid,p,q);
  44. if (p>=mid+) return Sum(Now->r,o<<|,mid+,r,p,q);
  45. if (p<=mid && q>=mid+) return Sum(Now->l,o<<,l,mid,p,mid)+Sum(Now->r,o<<|,mid+,r,mid+,q);
  46. }
  47. inline int Query(int L,int R)
  48. {
  49. int Ret=;
  50. while (true)
  51. {
  52. int t=Sum(Root[R],,,Mx,,Ret)-Sum(Root[L],,,Mx,,Ret);
  53. if (t<Ret) return Ret; else Ret=t+;
  54. }
  55. return Ret;
  56. }
  57. int main()
  58. {
  59. // freopen("data.in","r",stdin);
  60. // freopen("data.out","w",stdout);
  61. Init();
  62. Get_Int(n);
  63. for (int i=;i<=n;i++) Get_Int(a[i]),Mx=Max(Mx,a[i]);
  64. Root[]=NewNode(null);
  65. for (int i=;i<=n;i++) Root[i]=Insert(Root[i-],,,Mx,a[i]);
  66. Get_Int(m);
  67. for (int i=;i<=m;i++)
  68. {
  69. Get_Int(l),Get_Int(r);
  70. printf("%d\n",Query(l-,r));
  71. }
  72. return ;
  73. }

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. UEditor手动调节其宽度

    其高度一般不考虑,给个初始高度,然后任其自动扩展就行,对于其宽度,有两种思路,一种是调节其所在的DIV的宽度,让其自动填充,另一种是直接调节编辑器的宽度: adjust_editor_size: fu ...

  2. jmeter

    Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件. ...

  3. 设置apache登陆密码验证

    一.编辑虚拟目录配置文件,设置认证方式 Alias /test"/var/www/test"<Directory "/var/www/test">O ...

  4. 图片上传预览 (URL.createObjectURL)

    知识预备:1. URL.createObjectURL() 静态方法会创建一个 DOMString,它的 URL 表示参数中的对象.这个 URL 的生命周期和创建它的窗口中的 document 绑定. ...

  5. WINDOWS下如何安装GCC(转载http://nirvana.cublog.cn;作者:北斗星君(黄庠魁))

    第一章 在视窗操作系统下的GCC 第一节 GCC家族概览 GCC 是一个原本用于 Unix-like 系统下编程的编译器.不过,现在 GCC 也有了许多 Win32 下的移植版本.所以,也许对于许多 ...

  6. daydayup1 codeforces141c

    题意:给定n个数字,代表每个人前面有几个人比他高,让你构造一个height数组,满足条件 思路:直接贪心就好,假设到第i个人,设他的高度为i-a[i]+1,前面比他高的人每个人的高度加1

  7. 【Linux】【通信】1.ping不通

    关于为什么ping不通有很多种原因,但直接的表象就网络之间没有成功进行通讯: 在构建虚拟机和win之间的交互时,主要使用了3种网络模式: 桥接bridge VMnet0 主机host     VMne ...

  8. git branch(git 的branch 使用方法)

    查看分支:         $ git branch    该命令会类出当先项目中的所有分支信息,其中以*开头的表示当前所在的分支.参数-r列出远程仓库中的分支,而-a则远程与本地仓库的全部分支. 创 ...

  9. Windows中一个22年的漏洞

     X Windows系统,今天作为世界各地的Linux桌面,已经存在超过20年了,仍然存在Bug.几天前Sysadmins为libXfont库提供了补丁,来对应新发现的已经在代码中存在了22年的特权升 ...

  10. 【JavaScript】固定布局轮播图特效

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