BZOJ 3524 主席树(随机数水过) 解题报告
2017-07-17 21:38
225 查看
3524: [Poi2014]Couriers
Description
给一个长度为n的序列a。1≤a[i]≤n。
m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0。
Input
第一行两个数n,m。
第二行n个数,a[i]。
接下来m行,每行两个数l,r,表示询问[l,r]这个区间。
Output
m行,每行对应一个答案。
Sample Input
7 5
1 1 3 2 3 4 3
1 3
1 4
3 7
1 7
6 6
Sample Output
1
0
3
0
4
HINT
【数据范围】
n,m≤500000
2016.7.9重设空间,但未重测!
【解题报告】
本来是主席树的,随机水过。
不过这个要看人品。
代码如下:
Description
给一个长度为n的序列a。1≤a[i]≤n。
m组询问,每次询问一个区间[l,r],是否存在一个数在[l,r]中出现的次数大于(r-l+1)/2。如果存在,输出这个数,否则输出0。
Input
第一行两个数n,m。
第二行n个数,a[i]。
接下来m行,每行两个数l,r,表示询问[l,r]这个区间。
Output
m行,每行对应一个答案。
Sample Input
7 5
1 1 3 2 3 4 3
1 3
1 4
3 7
1 7
6 6
Sample Output
1
0
3
0
4
HINT
【数据范围】
n,m≤500000
2016.7.9重设空间,但未重测!
【解题报告】
本来是主席树的,随机水过。
不过这个要看人品。
代码如下:
/************************************************************** Problem: 3524 User: onepointo Language: C++ Result: Accepted Time:20348 ms Memory:12728 kb ****************************************************************/ #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; #define N 500010 int n,m,ans; int a ; vector<int> f ; int q_rand() { static int seed=10007; return seed=int(seed*48271LL%2147483647); } int main() { scanf("%d%d",&n,&m); for(int i=1;i<=n;++i) scanf("%d",&a[i]); for(int i=1;i<=n;++i) f[a[i]].push_back(i); for(int i=1;i<=m;++i) { int l,r;scanf("%d%d",&l,&r); bool flag=0;int cnt=22; while(!flag&&--cnt) { ans=a[q_rand()%(r-l+1)+l]; int t1=upper_bound(f[ans].begin(),f[ans].end(),l-1)-f[ans].begin(); int t2=lower_bound(f[ans].begin(),f[ans].end(),r+1)-f[ans].begin(); if(t2-t1>(r-l+1)/2) flag=1; } if(!flag) printf("0\n"); else printf("%d\n",ans); } return 0; }
相关文章推荐
- bzoj 3524 主席树 解题报告
- BZOJ 2144 LCA 解题报告
- 【BZOJ3524】Couriers(主席树)
- BZOJ 1051 最受欢迎的牛 解题报告
- BZOJ 4950 [Wf 2017] 二分图最大匹配 解题报告
- [bzoj3524/2223][Poi2014]Couriers_主席树
- BZOJ 1011 数学 解题报告
- BZOJ 2201 期望DP 解题报告
- BZOJ 4145 [AMPPZ2014] The Prices 解题报告
- BZOJ 1103 [POI 2007] dfs序+树状数组 解题报告
- BZOJ 3143 概率期望+高斯消元 解题报告
- BZOJ1028[JS0I2007] 麻将 解题报告【模拟+贪心(?)】
- BZOJ 1694 & 1742 [Usaco 2005 nov] 区间DP 解题报告
- BZOJ5071[Lydsy十月月赛] 小A的数字 解题报告
- BZOJ 3524: [Poi2014]Couriers 主席树
- 1075: 【明明的随机数】解题报告
- BZOJ 3998 [TJOI 2015] 弦论 解题报告
- [BZOJ2946] [Poi2000]公共串解题报告|后缀数组
- BZOJ 4152 最短路(SPFA) 解题报告
- BZOJ 2429 最小生成树 解题报告