bzoj 2223 [Coci 2009]PATULJCI

[Coci 2009]PATULJCI

Time Limit: 10 Sec  Memory Limit: 259 MB
Submit: 1286  Solved: 553
[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

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

 

题解:
  这道题就是可持久化线段树吧,然后维护一下该节点的size即可,权值线段树。
复制代码
 1 #include<cstring>
 2 #include<cmath>
 3 #include<algorithm>
 4 #include<iostream>
 5 #include<cstdio>
 6 
 7 #define N 300007
 8 #define M 10000007
 9 using namespace std;
10 inline int read()
11 {
12     int x=0,f=1;char ch=getchar();
13     while(ch>'9'||ch<'0'){if (ch=='-') f=-1;ch=getchar();}
14     while(ch<='9'&&ch>='0')
15     {
16         x=(x<<3)+(x<<1)+ch-'0';
17         ch=getchar();
18     }
19     return x*f;
20 }
21 
22 int n,m,sz,limit;
23 int root[N],ls[M],rs[M],sum[M];
24 
25 void change(int l,int r,int yl,int &xz,int z)
26 {
27     xz=++sz,sum[xz]=sum[yl]+1;
28     if (l==r) return;
29     ls[xz]=ls[yl],rs[xz]=rs[yl];
30     int mid=(l+r)>>1;
31     if (z<=mid) change(l,mid,ls[yl],ls[xz],z);
32     else change(mid+1,r,rs[yl],rs[xz],z);
33 }
34 int query(int l,int r,int x,int y,int tmp)
35 {
36     if (l==r) return l;
37     int mid=(l+r)>>1;
38     if (sum[ls[y]]-sum[ls[x]]>tmp) return query(l,mid,ls[x],ls[y],tmp);
39     else if (sum[rs[y]]-sum[rs[x]]>tmp) return query(mid+1,r,rs[x],rs[y],tmp);
40     else return 0;
41 }
42 int main()
43 {
44     n=read(),limit=read();
45     for (int i=1;i<=n;i++)
46     {
47         int x=read();
48         change(1,limit,root[i-1],root[i],x);
49     }
50     m=read();
51     for (int i=1;i<=m;i++)
52     {
53         int x=read(),y=read();
54         int ans=query(1,limit,root[x-1],root[y],(y-x+1)/2);
55         if (ans==0) printf("no\n");
56         else printf("yes %d\n",ans);
57     }
58 }
复制代码

 

posted @   Kaiser-  阅读(142)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示