bzoj5178: [Jsoi2011]棒棒糖
就是裸的主席树嘛。。。
表扬一下自己1A
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath>
using namespace std; struct chairman_tree
{
int lc,rc,c;
}tr[];int trlen,rt[];
int maketree(int now,int l,int r,int p)
{
if(now==)
{
now=++trlen;
tr[now].lc=tr[now].rc=;
tr[now].c=;
}
tr[now].c++;
if(l==r)return now;
else
{
int mid=(l+r)/;
if(p<=mid)tr[now].lc=maketree(tr[now].lc,l,mid,p);
else tr[now].rc=maketree(tr[now].rc,mid+,r,p);
}
return now;
}
int merge(int x,int y)
{
if(x==||y==)return x+y;
tr[x].c+=tr[y].c;
tr[x].lc=merge(tr[x].lc,tr[y].lc);
tr[x].rc=merge(tr[x].rc,tr[y].rc);
return x;
} //-------------init------------------- int check(int x,int y,int l,int r,int tot)
{
if(l==r)return l; int lsum=tr[tr[y].lc].c-tr[tr[x].lc].c;
int rsum=tr[tr[y].rc].c-tr[tr[x].rc].c; int mid=(l+r)/;
if(lsum>=tot/+)return check(tr[x].lc,tr[y].lc,l,mid,tot);
else if(rsum>=tot/+)return check(tr[x].rc,tr[y].rc,mid+,r,tot);
else return ;
} int main()
{
int n,m=,Q,x;
scanf("%d%d",&n,&Q);
trlen=;memset(rt,,sizeof(rt));
for(int i=;i<=n;i++)
{
scanf("%d",&x);
rt[i]=maketree(rt[i],,m,x);
rt[i]=merge(rt[i],rt[i-]);
} int l,r;
while(Q--)
{
scanf("%d%d",&l,&r);
printf("%d\n",check(rt[l-],rt[r],,m,r-l+));
}
return ;
}
bzoj5178: [Jsoi2011]棒棒糖的更多相关文章
- BZOJ5178[Jsoi2011]棒棒糖——主席树
题目描述 Coffee的世界里也是有棒棒糖卖的,Coffee买了N(1≤N≤50000)只连着的.这N只棒棒糖包裹在小塑料袋中,排成 一列,相邻的两只棒棒糖的塑料袋是接起来的.为了方便,我们把棒棒糖从 ...
- bzoj5178 [Jsoi2011]棒棒糖 主席树+线段树二分
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5178 https://lydsy.com/JudgeOnline/problem.php?id ...
- 【bzoj5178】[Jsoi2011]棒棒糖 主席树
题目描述 Coffee的世界里也是有棒棒糖卖的,Coffee买了N(1≤N≤50000)只连着的.这N只棒棒糖包裹在小塑料袋中,排成一列,相邻的两只棒棒糖的塑料袋是接起来的.为了方便,我们把棒棒糖从左 ...
- 「JSOI2011」棒棒糖
「JSOI2011」棒棒糖 传送门 双倍经验 考虑主席树做法. 对于当前的主席树节点,如果 \(\le mid\) 的个数足够就往左边走,否则就尝试往右边走,都不行就返回 \(0\). 参考代码: # ...
- bzoj 2209: [Jsoi2011]括号序列 splay
2209: [Jsoi2011]括号序列 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 833 Solved: 392[Submit][Status ...
- BZOJ 2209: [Jsoi2011]括号序列 [splay 括号]
2209: [Jsoi2011]括号序列 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 1111 Solved: 541[Submit][Statu ...
- Android 5.0(棒棒糖))十大新特性
Android 5.0(棒棒糖))十大新特性 1. 全新Material Design设计风格 Android Lollipop全新的设计语言是受到了多种因素影响,是一种大胆的平面化创新.换句话说,谷 ...
- BZOJ 4710: [Jsoi2011]分特产 [容斥原理]
4710: [Jsoi2011]分特产 题意:m种物品分给n个同学,每个同学至少有一个物品,求方案数 对于每种物品是独立的,就是分成n组可以为空,然后可以用乘法原理合起来 容斥容斥 \[ 每个同学至少 ...
- bzoj 2209 [Jsoi2011]括号序列 平衡树
2209: [Jsoi2011]括号序列 Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 1404 Solved: 699[Submit][Statu ...
随机推荐
- wcf 错误:无法加载或初始化请求的服务提供程序
解决办法:cmd netsh winsock reset 恢复网络编程接口
- windows下查看端口进程占用情况
引用:http://jingyan.baidu.com/article/3c48dd34491d47e10be358b8.html 我们在启动应用的时候经常发现我们需要使用的端口被别的程序占用,但是我 ...
- MacOS 升级后pod 出现的问题
-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby: bad ...
- IOS 监控网络变化案例源码
随着移动网络升级:2G->3G->4G甚至相传正在研发的5G,网络速度是越来越快,但这流量也像流水一般哗哗的溜走. 网上不是流传一个段子:睡觉忘记关流量,第二天房子就归移动了! 这固然是一 ...
- C#:winform项目在win7,xp32位和64位都能运行
vs中项目配置管理器活动解决方案平台选择X86平台.
- c#使用RSA进行注册码验证
公司的一个项目快完成了,最后要加上注册验证,翻了n多资料,终于做出来了.现在把体验说一下,以后要用的时候也好找.~~ .Net自带的类库里面有个算法. 这个算法的原理是不对称加密的原理.不对称加密原理 ...
- Caffe+Kubuntu16.04_X64+CUDA 8.0配置
前言: 经过尝试过几次Caffe,theano,MxNet之后,很长时间没有进行caffe的更新,此次在Ubuntu16.04下安装Caffe,折腾了一天时间,终于安装成功. 参考链接:Caffe+U ...
- FormCollection获取请求数据
public ActionResult Add(FormCollection fm) //通过FormCollection 对象获取表单数据 { string message = "&quo ...
- 修改默认的gitlab clone地址,要不每次都得自己修改
这个是无法clone的,得换成gitlab的ip地址 下面进行修改 sudo vim /opt/gitlab/embedded/service/gitlab-rails/config/ ...
- mysql 是如何保证在高并发的情况下autoincrement关键字修饰的列不会出现重复
转载自 https://juejin.im/book/5bffcbc9f265da614b11b731/section/5c42cf94e51d45524861122d#heading-8 mysql ...