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 题目大意: 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向 ...
随机推荐
- APACHE 在windows下的配置
目前apache在windows下只支持到2.2 所以php必须下载相应的线程安全的 然后打开apache的配置页面 listen directory 和 load_module修改 httpd -k ...
- 深入浅出Mybatis系列(八)---mapper映射文件配置之select、resultMap
上篇<深入浅出Mybatis系列(七)---mapper映射文件配置之insert.update.delete>介绍了insert.update.delete的用法,本篇将介绍select ...
- iOS -初识UIKit
UIKit框架:UI界面上每一个元素都是一个对象 一张图片是UIimageView对象 一段文字是一个UILabei对象 一个按钮是一个UIButton对象 搭建UI界面的步骤 利用类创建对象 将对象 ...
- python3内置函数
abs()Return the absolute value of a number. The argument may be an integer or a floating point numbe ...
- 小游戏Talk表
[Config]1|0|2|久远的记忆影子|你也是误入宠物王国的妹子吧,我在这里等你很久了,或许我们应该一起逃出这里,跟着我.[Config] [Config]2|3|2|久远的记忆影子|这里原本是一 ...
- php生成图片缩略图,支持png透明
注:此功能依赖GD2图形库 PHP生成缩略图类 <?php /* * desc: Resize Image(png, jpg, gif) * author: 十年后的卢哥哥(http://w ...
- 用volley在Genymotion上获取网页源码
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdUAAALUCAIAAADSbz+YAAAgAElEQVR4nOydeVwT197/R+9zu9zluU
- apache和nginx
虽然nginx使用较少 还是写写文章,记录下 nginx是异步非阻塞,apache是阻塞的. apache动态页面比nginx好. 由于nginx的高并发性(使用epoll模型),所以出来静态页面性能 ...
- Redis各类型应用场景
Redis的六种特性 l ,重要消息的,然后工作线程可以选择按 ret = r.zincrby("login:login_times", 1, uid) //那么如何获得登录次数最 ...
- 《Android深度探索》(卷1)HAL与驱动开发读后感:
第一章:安卓系统移植与驱动开发概述 全书分为4篇,分别从搭建开发环境,Linux驱动和Android HAL的基础知识,开发Linux驱动的高级技术和分析典型的Linux驱动源代码4个方面介绍Andr ...