#主席树#CF813E Army Creation
题目
\(n\) 个数 \(a_i\) , \(k\) 为给定值, \(q\) 次询问。
每次问 \([l,r]\) 内最多可以选多少个数,
满足同一个数的出现次数不超过 \(k\)
不带修,强制在线
分析
考虑对于每一种数开一个vector,然后在主席树中存入\(now-k\)的位置,
那么对于每次询问就是\([0,l)\)范围内有多少个数,直接在主席树里查询即可
代码
#include <cstdio>
#include <cctype>
#include <vector>
#define rr register
using namespace std;
const int N=100101; vector<int>K[N];
inline signed iut(){
rr int ans=0,f=1; rr char c=getchar();
while (!isdigit(c)) f=(c=='-')?-f:f,c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans*f;
}
inline void print(int ans){
if (ans>9) print(ans/10);
putchar(ans%10+48);
}
struct Chair{
int w[N<<5],ls[N<<5],rs[N<<5],cnt;
inline void build(int &rt,int l,int r){
w[rt=++cnt]=0; rr int mid=(l+r)>>1;
if (l<r) build(ls[rt],l,mid),build(rs[rt],mid+1,r);
}
inline void update(int &rt,int l,int r,int k){
rr int trt=++cnt,mid=(l+r)>>1;
ls[trt]=ls[rt],rs[trt]=rs[rt],w[trt]=w[rt]+1,rt=trt;
if (l==r) return;
k<=mid?update(ls[trt],l,mid,k):update(rs[trt],mid+1,r,k);
}
inline signed query(int L,int R,int l,int r,int k){
if (l==r) return w[R]-w[L];
rr int mid=(l+r)>>1;
if (k<=mid) return query(ls[L],ls[R],l,mid,k);
else return query(rs[L],rs[R],mid+1,r,k)+w[ls[R]]-w[ls[L]];
}
}Tre;
int rt[N],n,m,k,a[N];
signed main(){
n=iut(),k=iut(),Tre.build(rt[0],0,n);
for (rr int i=1;i<=n;++i){
rr int x=iut(),pos=0,len=K[x].size();
if (len>=k) pos=K[x][len-k];
Tre.update(rt[i]=rt[i-1],0,n,pos);
K[x].push_back(i);
}
for (rr int Q=iut(),lans=0;Q;--Q){
rr int l=(lans+iut())%n+1,r=(lans+iut())%n+1;
if (l>r) l^=r,r^=l,l^=r;
print(lans=Tre.query(rt[l-1],rt[r],0,n,l-1)),putchar(10);
}
return 0;
}
#主席树#CF813E Army Creation的更多相关文章
- CF813E Army Creation
题意 \(n\)个数\(a[i] ,q\)次询问,\(n,a[i],q<=10^5\)每次问\([l,r]\)内最多可以选多少个数,满足同一个数的出现次数不超过\(k\) 强制在线 Sol 处理 ...
- 【CF813E】Army Creation(主席树)
[CF813E]Army Creation(主席树) 题面 CF 洛谷 翻译 by ppl 见洛谷 题解 考虑最多只会有\(K\)个相同的数 那么,也就是说,如果一个数会被选 那么,和它相等的数中,在 ...
- 主席树[可持久化线段树](hdu 2665 Kth number、SP 10628 Count on a tree、ZOJ 2112 Dynamic Rankings、codeforces 813E Army Creation、codeforces960F:Pathwalks )
在今天三黑(恶意评分刷上去的那种)两紫的智推中,突然出现了P3834 [模板]可持久化线段树 1(主席树)就突然有了不详的预感2333 果然...然后我gg了!被大佬虐了! hdu 2665 Kth ...
- Educational Codeforces Round 22 E. Army Creation 主席树 或 分块
http://codeforces.com/contest/813/problem/E 题目大意: 给出长度为n的数组和k, 大小是1e5级别. 要求在线询问区间[l, r]权值, 权值定义为对于 ...
- Educational Codeforces Round 22 E. Army Creation
Educational Codeforces Round 22 E. Army Creation 题意:求区间[L,R]内数字次数不超过k次的这些数字的数量的和 思路:和求区间内不同数字的数量类似,由 ...
- Codeforces 813E - Army Creation
813E - Army Creation 思路: 线段树+二分 先预处理每个点往后走k步的下标 线段树二叉树的每个节点用vector维护这些下标,给这些下标排个序 询问区间L,R,那么把下标小于等于R ...
- bzoj3207--Hash+主席树
题目大意: 给定一个n个数的序列和m个询问(n,m<=100000)和k,每个询问包含k+2个数字:l,r,b[1],b[2]...b[k],要求输出b[1]~b[k]在[l,r]中是否出现. ...
- bzoj1901--树状数组套主席树
树状数组套主席树模板题... 题目大意: 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a[i+2]--a[ ...
- BZOJ 3626: [LNOI2014]LCA [树链剖分 离线|主席树]
3626: [LNOI2014]LCA Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2050 Solved: 817[Submit][Status ...
- BZOJ 1146: [CTSC2008]网络管理Network [树上带修改主席树]
1146: [CTSC2008]网络管理Network Time Limit: 50 Sec Memory Limit: 162 MBSubmit: 3522 Solved: 1041[Submi ...
随机推荐
- SpringBoot事务注解@Transactional 事物回滚、手动回滚事物
处理springboot 下提交事务异常,数据库没有回滚的问题. spring的文档中说道,spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回滚操作. 什么 ...
- 案例分享:Qt便携式致病菌快速检测仪(账号管理、实验过程、二维图表、历史数据、通讯管理、实验报告、中英文等等)
需求 根据提供的用户原型设计.ui设计.通讯协议研发便携式致病菌快速检测仪器软件. 100%还原ui. 基本主功能(推荐visio:★★★☆☆,前期主流程需求整理) Dem ...
- Navicat 12连接mysql8.x报错2059 - authentication plugin 'caching_sha2_password' 解决办法
// %表示远程连接允许所有ip,如果只是连接本地,将%改为localhost即可 ALTER USER 'root'@'%' IDENTIFIED BY '你自己的mysql的密码' PASSWOR ...
- Mac环境下, VMware Fusion Pro下的虚拟机( CentOS 7)的 NAT网络配置
前提实现说明 1.vm版本VMware Fusion Pro 12.1.0 2.centos版本centos7.6 1.虚拟机能访问外网,虚拟机能访问mac本机: 2.mac本机可以连接虚拟机 操作步 ...
- 1.Go 的基本数据类型
Go 的基本数据类型
- 配置Nexus 3服务器作为Nuget包的仓库
1.进入Nexus的Web界面 在右上角点"Login" 根据提示,去服务器上查看初始密码 root@dns-server:/mnt/data# cd nexus-data roo ...
- 【Azure Developer】在微软云中国区,如何使用Microsoft GraphAPI连接到B2C Tenant
问题描述 如题所述,当在中国区使用Microsoft GraphAPI连接B2C Tenant时候,如何来设置中国区的Endpoint呢?在GitHub的示例中,并没有示例介绍如何连接中国区.如 问题 ...
- Git 如何删除本地分支和远程分支
查看已有的本地及远程分支:git branch -a 删除远程分支(当前删除的是origin/dev分支):git push origin --delete dev 删除后,再次查看分支情况: ...
- 虚拟机和开发板之间通过NFS互联
简介 NFS是Network File System的首字母缩写.它是一种分布式协议,使客户端可以访问远程服务器上的共享文件.它允许网络中的计算机之间通过TCP/IP网络共享资源. 配置过程 安装NF ...
- jQuery 框架
jQuery 框架 目录 jQuery 框架 一. 概述 二. jQuery 安装引用 2.1 安装 2.2 本地导入使用 2.3 jQuery CDN引入 三. jQuery基本语法 四. 查找标签 ...