【BZOJ2223/3524】[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 Input

no
yes 1
no
yes 1
no
yes 2
no
yes 3

Sample Output

HINT

Notice:输入第二个整数是序列中权值的范围Lim,即1<=ai(1<=i<=n)<=Lim。

依旧主席树模板,无需离散化。

1<=Lim<=10000

Source

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #define N 10000010
 5 using namespace std;
 6 int sum[N],root[500010],ls[N],rs[N];
 7 int n,m,lim,sz;
 8 void updata(int l,int r,int x,int &y,int v)
 9 {
10     y=++sz;
11     sum[y]=sum[x]+1;
12     ls[y]=ls[x]; rs[y]=rs[x];
13     if (l==r)   return;
14     int mid=(l+r)>>1;
15     if (v<=mid)  updata(l,mid,ls[x],ls[y],v);
16     else    updata(mid+1,r,rs[x],rs[y],v);
17 }
18
19 int query(int L,int R)
20 {
21     int l=1,r=n,temp=(R-L+1)>>1,x=root[L-1],y=root[R],mid;
22     while (l<r)
23     {
24         if (sum[y]-sum[x]<=temp) return 0;
25             mid=(l+r)>>1;
26         if (sum[ls[y]]-sum[ls[x]]>temp)
27         {
28             r=mid; x=ls[x]; y=ls[y];
29         }
30         else    if (sum[rs[y]]-sum[rs[x]]>temp)
31         {
32             l=mid+1, x=rs[x]; y=rs[y];
33         }
34         else    return 0;
35     }
36     return l;
37 }
38
39 int main()
40 {
41     scanf("%d%d",&n,&m);
42     for (int i=1;i<=n;i++)
43     {
44         int a;
45         scanf("%d",&a);
46         updata(1,n,root[i-1],root[i],a);
47     }
48 //  scanf("%d",&m);
49     for (int i=1;i<=m;i++)
50     {
51         int aa,bb;
52         scanf("%d%d",&aa,&bb);
53         int pos=query(aa,bb);
54         printf("%d\n",pos);
55     //  if (pos==0) printf("no\n");
56         //else  printf("yes %d\n",pos);
57     }
58     return 0;
59 }

时间: 2024-10-13 09:05:12

【BZOJ2223/3524】[Coci 2009]PATULJCI的相关文章

bzoj2223 [Coci 2009]PATULJCI (模板)(主席树)

2223: [Coci 2009]PATULJCI Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 1245  Solved: 530[Submit][Status][Discuss] Description HINT 输入第二个整数是序列中权值的范围Lim,即1<=ai(1<=i<=n)<=Lim,1<=Lim<=10000. 主席树模板dearu: 蒟蒻只能码板子了啊(摊): ↓代码 1 #include<ios

【莫队算法】【权值分块】bzoj2223 [Coci 2009]PATULJCI

不带修改主席树裸题<=>莫队+权值分块裸题. 复杂度O(m*sqrt(n)). P.S.题目描述坑爹,第二个数是权值的范围. #include<cstdio> #include<algorithm> #include<cmath> using namespace std; #define N 300001 #define M 10001 int f,c; inline void R(int &x){ c=0;f=1; for(;c<'0'||c

BZOJ2223 [Coci 2009]PATULJCI

求区间内个数大于rank的一个数 主席树求一下就好啦! 1 /************************************************************** 2 Problem: 2223 3 User: rausen 4 Language: C++ 5 Result: Accepted 6 Time:704 ms 7 Memory:54712 kb 8 ********************************************************

【BZOJ 2039】 2039: [2009国家集训队]employ人员雇佣 (最小割)

2039: [2009国家集训队]employ人员雇佣 Time Limit: 20 Sec  Memory Limit: 259 MBSubmit: 1511  Solved: 728 Description 作为一个富有经营头脑的富翁,小L决定从本国最优秀的经理中雇佣一些来经营自己的公司.这些经理相互之间合作有一个贡献指数,(我们用Ei,j表示i经理对j经理的了解程度),即当经理i和经理j同时被雇佣时,经理i会对经理j做出贡献,使得所赚得的利润增加Ei,j.当然,雇佣每一个经理都需要花费一定

bzoj3524 [Poi2014]Couriers/2223 [Coci 2009]PATULJCI

题目链接1 题目链接2 主席树模板题 两题有细节不同 1 #include<algorithm> 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cstdio> 6 #include<string> 7 #include<cmath> 8 #include<ctime> 9 #include<queue>

【bzoj 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

【BZOJ-2223】PATULJCI 可持久化线段树

2223: [Coci 2009]PATULJCI Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 728  Solved: 292[Submit][Status][Discuss] 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 Input noyes 1noyes 1noyes 2noyes 3 Sample

【BZOJ 2151】 2151: 种树 (贪心+堆)

2151: 种树 Description A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树.园林部门得到指令后,初步规划出n个种树的位置,顺时针编号1到n.并且每个位置都有一个美观度Ai,如果在这里种树就可以得到这Ai的美观度.但由于A城市土壤肥力欠佳,两棵树决不能种在相邻的位置(i号位置和i+1号位置叫相邻位置.值得注意的是1号和n号也算相邻位置!).最终市政府给园林部门提供了m棵树苗并要求全部种上,请你帮忙设计种树方案使得美观度总和最大.如果无法将m棵树苗

HDU2988 Dark roads 【最小生成树Kruskal】

Dark roads Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 583    Accepted Submission(s): 253 Problem Description Economic times these days are tough, even in Byteland. To reduce the operating