就是裸的主席树嘛。。。

表扬一下自己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]棒棒糖的更多相关文章

  1. BZOJ5178[Jsoi2011]棒棒糖——主席树

    题目描述 Coffee的世界里也是有棒棒糖卖的,Coffee买了N(1≤N≤50000)只连着的.这N只棒棒糖包裹在小塑料袋中,排成 一列,相邻的两只棒棒糖的塑料袋是接起来的.为了方便,我们把棒棒糖从 ...

  2. bzoj5178 [Jsoi2011]棒棒糖 主席树+线段树二分

    题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=5178 https://lydsy.com/JudgeOnline/problem.php?id ...

  3. 【bzoj5178】[Jsoi2011]棒棒糖 主席树

    题目描述 Coffee的世界里也是有棒棒糖卖的,Coffee买了N(1≤N≤50000)只连着的.这N只棒棒糖包裹在小塑料袋中,排成一列,相邻的两只棒棒糖的塑料袋是接起来的.为了方便,我们把棒棒糖从左 ...

  4. 「JSOI2011」棒棒糖

    「JSOI2011」棒棒糖 传送门 双倍经验 考虑主席树做法. 对于当前的主席树节点,如果 \(\le mid\) 的个数足够就往左边走,否则就尝试往右边走,都不行就返回 \(0\). 参考代码: # ...

  5. bzoj 2209: [Jsoi2011]括号序列 splay

    2209: [Jsoi2011]括号序列 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 833  Solved: 392[Submit][Status ...

  6. BZOJ 2209: [Jsoi2011]括号序列 [splay 括号]

    2209: [Jsoi2011]括号序列 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1111  Solved: 541[Submit][Statu ...

  7. Android 5.0(棒棒糖))十大新特性

    Android 5.0(棒棒糖))十大新特性 1. 全新Material Design设计风格 Android Lollipop全新的设计语言是受到了多种因素影响,是一种大胆的平面化创新.换句话说,谷 ...

  8. BZOJ 4710: [Jsoi2011]分特产 [容斥原理]

    4710: [Jsoi2011]分特产 题意:m种物品分给n个同学,每个同学至少有一个物品,求方案数 对于每种物品是独立的,就是分成n组可以为空,然后可以用乘法原理合起来 容斥容斥 \[ 每个同学至少 ...

  9. bzoj 2209 [Jsoi2011]括号序列 平衡树

    2209: [Jsoi2011]括号序列 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1404  Solved: 699[Submit][Statu ...

随机推荐

  1. Android截图截取弹框AlertDialog

    1:效果如图 2:权限 <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="21" ...

  2. 【Oracle】数据迁移工具(1):SQL Loader

    SQL Loader是一种数据加载工具,可以把外部数据加载到Oracle数据库中.SQL Loader中的参数有很多,本文只在第一部分中列出常用参数.要想运用SQL Loader工具 ,需要我们编辑一 ...

  3. 【技术累积】【点】【Java】【12】几种常见编码(持续更新)

    问题描述 有这么一段代码: String question = new String(record.getQuestion().getBytes("iso-8859-1"), &q ...

  4. 程序员客栈与DaoCloud这两家企业联手后,运维工程师要失业了!

    2017年1月11日 ,程序员客栈与DaoCloud正式建立合作伙伴关系,为创业企业和团队提供容器应用解决方案.通过与DaoCloud合作,客栈可以更有效地把控开发环节中的不确定因素,解决项目工期不确 ...

  5. 怎样批量删除PDF文件中的注释

    日常我们在阅读一些PDF文章时候,我们会发现有些PDF文章带有非常多的注释,显得非常不美观,影响了阅读体验.那么PDF文章里的批注应该怎么进行删除呢?怎样批量删除PDF文件中的注释?   操作教程: ...

  6. PAT_A1141#PAT Ranking of Institutions

    Source: PAT A1141 PAT Ranking of Institutions (25 分) Description: After each PAT, the PAT Center wil ...

  7. PAT_A1135#Is It A Red-Black Tree

    Source: PAT A1135 Is It A Red-Black Tree (30 分) Description: There is a kind of balanced binary sear ...

  8. Django基础(二)

    Django基础(二) http://www.cnblogs.com/wupeiqi/articles/4508271.html

  9. 【剑指Offer】26、二叉搜索树与双向链表

      题目描述:   输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表.要求不能创建任何新的结点,只能调整树中结点指针的指向.   解题思路:   首先要理解此题目的含义,在双向链表中,每个结 ...

  10. 使用百度fis3构建前端多页应用

    吾日三省吾身. 从一个完全不相干的行业转到IT,多多少少都会感到迷茫,不知道学习什么.从何学起?在几乎没有任何经验的背景下,坚持投递简历,最后终于进入了一个创业公司,开始做起了前端工作.工资勉强维持生 ...