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 }

 

转载于:https://www.cnblogs.com/fengzhiyuan/p/8032666.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值