BZOJ2223 [Coci 2009]PATULJCI 题解&代码

原创 2016年06月01日 21:52:45

题意:给出一个长度为n的序列a满足1≤a[i]≤n。
又有m组询问,每次对于一个区间[l,r]问是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出yes,否则输出no。

题解:标准主席树…主席树还是这么简单粗暴QwQ但是我MLE了好多次,这空间卡得我怀疑人生…不过最后的错误反而不在空间233333
我把n和m弄错了WA了好几次,总之是简单错误啦
和BZOJ3524是一道题,链接:
http://blog.csdn.net/rainbow6174/article/details/51074109

/**************************************************************
    Problem: 2223
    User: Rainbow6174
    Language: C++
    Result: Accepted
    Time:1072 ms
    Memory:120412 kb
****************************************************************/

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 500005;
const int maxm = 10005;
int n,m,q,l,r,x,cnt,ans,rt[maxn],son[2][maxn*20],sum[maxn*20];
void Insert(int rl,int rn,int l,int r,int v)
{
    sum[rn]=sum[rl]+1;
    if(l==r)return;
    int mid = (l+r)/2;
    if(mid>=v) son[1][rn]=son[1][rl],son[0][rn]=++cnt,Insert(son[0][rl],son[0][rn],l,mid,v);
    else son[0][rn]=son[0][rl],son[1][rn]=++cnt,Insert(son[1][rl],son[1][rn],mid+1,r,v);
    //cout<<rl<<' '<<rn<<' '<<sum[son[0][rn]]<<' '<<sum[son[0][rl]]<<' '<<v<<endl;
}
int query(int rl,int rn,int l,int r,int k)
{
    if(l==r)return l;
    int mid = (l+r)/2;
    if(sum[son[0][rn]]-sum[son[0][rl]]>k) return query(son[0][rl],son[0][rn],l,mid,k);
    if(sum[son[1][rn]]-sum[son[1][rl]]>k) return query(son[1][rl],son[1][rn],mid+1,r,k);
    return 0;
}
int main(void)
{
    //freopen("patuljci10.in","r",stdin);
    //freopen("patuljci.ans","w",stdout);
    scanf("%d%d",&n,&m);
    for(int i = 1; i <= n; i++)rt[i]=++cnt;
    for(int i = 1; i <= n; i++)
    {
        scanf("%d",&x);
        Insert(rt[i-1],rt[i],1,m,x);
    }
    scanf("%d",&q);
    for(int i = 1; i <= q; i++)
    {
        scanf("%d%d",&l,&r);
        ans=query(rt[l-1],rt[r],1,m,(r-l+1)/2);
        if(ans)printf("yes %d\n",ans);
        else printf("no\n");
    }
    return 0;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

[BZOJ2223][Coci 2009]PATULJCI

可持久化线段树

bzoj2223[Coci 2009] PATULJCI

整体二分

我是如何成为一名python大咖的?

人生苦短,都说必须python,那么我分享下我是如何从小白成为Python资深开发者的吧。2014年我大学刚毕业..

BZOJ2223: [Coci 2009]PATULJCI&&BZOJ3524: [Poi2014]Couriers

自己的智商又不够用了。。。。。 一直错查了一天 发现时New_Node的时候没有打return。。。。。 这个错误之前做的题目已经出现过很多次了 感觉自己瞬间拉低整条街 智商 很裸的静态区间k...

[BZOJ2223][[Coci 2009]PATULJCI][主席树+特判]

[BZOJ2223][[Coci 2009]PATULJCI][主席树+特判]题目大意:同BZOJ3524: http://blog.csdn.net/g1n0st/article/details/5...

bzoj 2223: [Coci 2009]PATULJCI

Description Input Output 10 3 1 2 1 2 1 2 3 2 3 3 8 1 2 1 3 1 4 1 5 2 5 2 6 6 9 7 10 Sample I...

BZOJ 2223: [Coci 2009]PATULJCI

和这个BZOJ 3524: [Poi2014]Couriers没什么区别吧大约 都是裸的主席树 其实这是很久之前写的我现在快忘了 到时候在看看吧我。。。 发现看别人代码或看自己代码都是煎熬 ...

BZOJ2223 PATULJCI COCI2009_CONTSET3

背景: 输入: 输出: 大意: 白雪公主和N个小矮人住在森林里。每天早上,矮人们排成一队出去挖矿的路上,白雪公主就负责给他们拍照,并把这些照片传到社交网络上去。 白雪每次都会拍很...

POJ 1018(二分)

(身为蒟蒻 自然只能copy大神代码了)(第一次写题解 不喜勿喷)打(chao)了代码才看懂 汗……QAQ大致题意: 某公司要建立一套通信系统,该通信系统需要n种设备,而每种设备分别可以有m1、m2...

考试(2017年3月26日) (COCI)

COCI试题

Vijos P1549 中位数(CQOI2009)题解

水题一道,只要知道了一些数学基本知识,就可以了,没有代码难度。 http://baike.baidu.com/link?url=_TwVw9xyLp_T2vJ7lQLWjb6b4UfSI5HYpvN...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)