BZOJ 4408 主席数+找规律
- #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 主席数+找规律的更多相关文章
- POJ2402 Palindrome Numbers第K个回文数——找规律
问题 给一个数k,给出第k个回文数 链接 题解 打表找规律,详见https://www.cnblogs.com/lfri/p/10459982.html,差别仅在于这里从1数起. AC代码 #inc ...
- BZOJ 4408 神秘数
题解同各神犇的方法... #include<iostream> #include<cstdio> #include<cstring> #include<alg ...
- bzoj 1432 数学(找规律)
我们可以发现所有的情况(除n=1时),都可以找到两个交叉的直线,就是第一层的那 两个线段所在的直线如图中左 那么我们以这个为准,两边对称着加直线,会得到右图,每一层是折线,且每 加一对儿就多两条线段, ...
- BZOJ 4001 [TJOI2015]概率论 ——找规律
题目太神了,证明还需要用到生成函数. 鉴于自己太菜,直接抄别人的结果好了. #include <map> #include <cmath> #include <queue ...
- ●BZOJ 4408 [Fjoi 2016]神秘数
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4408 题解: 主席树 首先,对于一些数来说, 如果可以我们可以使得其中的某些数能够拼出 1- ...
- bzoj 1002 [FJOI2007]轮状病毒 高精度&&找规律&&基尔霍夫矩阵
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 2234 Solved: 1227[Submit][Statu ...
- BZOJ [FJOI2007]轮状病毒 (找规律)
1002: [FJOI2007]轮状病毒 Time Limit: 1 Sec Memory Limit: 162 MBSubmit: 6009 Solved: 3282[Submit][Statu ...
- BZOJ 4706: B君的多边形 找规律
4706: B君的多边形 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4706 Description 有一个正n多边形,我们要连接一些 ...
- BZOJ 1192 鬼谷子的钱袋 找规律
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1192 题目大意: 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向 ...
随机推荐
- UEditor手动调节其宽度
其高度一般不考虑,给个初始高度,然后任其自动扩展就行,对于其宽度,有两种思路,一种是调节其所在的DIV的宽度,让其自动填充,另一种是直接调节编辑器的宽度: adjust_editor_size: fu ...
- jmeter
Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域. 它可以用于测试静态和动态资源例如静态文件. ...
- 设置apache登陆密码验证
一.编辑虚拟目录配置文件,设置认证方式 Alias /test"/var/www/test"<Directory "/var/www/test">O ...
- 图片上传预览 (URL.createObjectURL)
知识预备:1. URL.createObjectURL() 静态方法会创建一个 DOMString,它的 URL 表示参数中的对象.这个 URL 的生命周期和创建它的窗口中的 document 绑定. ...
- WINDOWS下如何安装GCC(转载http://nirvana.cublog.cn;作者:北斗星君(黄庠魁))
第一章 在视窗操作系统下的GCC 第一节 GCC家族概览 GCC 是一个原本用于 Unix-like 系统下编程的编译器.不过,现在 GCC 也有了许多 Win32 下的移植版本.所以,也许对于许多 ...
- daydayup1 codeforces141c
题意:给定n个数字,代表每个人前面有几个人比他高,让你构造一个height数组,满足条件 思路:直接贪心就好,假设到第i个人,设他的高度为i-a[i]+1,前面比他高的人每个人的高度加1
- 【Linux】【通信】1.ping不通
关于为什么ping不通有很多种原因,但直接的表象就网络之间没有成功进行通讯: 在构建虚拟机和win之间的交互时,主要使用了3种网络模式: 桥接bridge VMnet0 主机host VMne ...
- git branch(git 的branch 使用方法)
查看分支: $ git branch 该命令会类出当先项目中的所有分支信息,其中以*开头的表示当前所在的分支.参数-r列出远程仓库中的分支,而-a则远程与本地仓库的全部分支. 创 ...
- Windows中一个22年的漏洞
X Windows系统,今天作为世界各地的Linux桌面,已经存在超过20年了,仍然存在Bug.几天前Sysadmins为libXfont库提供了补丁,来对应新发现的已经在代码中存在了22年的特权升 ...
- 【JavaScript】固定布局轮播图特效
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...