当前位置: 首页 > news >正文

求 max(区间不同数的个数-区间mex)

rt

做法:

  1. 先枚举\(mex\),说明\(mex\)不会在答案区间中存在
  2. 那么答案区间就是一个不包含\(mex\)的极长区间,可能有\(n\)
  3. 一个区间中不同数的个数可以用树状数组求:维护以下标为权值的桶,每次更新last数组
const int M=5e5+5;
int sum[M];
int lowbit(int p){return p&-p;}
void add(int p,int x){while(p<=M){sum[p]+=x;p+=lowbit(p);}
}
int qr(int x){int res=0;while(x){res+=sum[x];x-=lowbit(x);}return res;
}
int qr(int l,int r){return qr(r)-qr(l-1);
}
int n,m;
void solve(){cin>>n>>m;vector<int>a(n+1);rep(i,1,n)cin>>a[i];map<int,int>last;int ans=-1;rep(i,1,n){if(last[a[i]]){add(last[a[i]],-1);}int temp=last[a[i]];ans = max(ans, qr(temp+1,i-1)-a[i]);last[a[i]]=i;add(i,1);}rep(i,1,n+1){ans= max(ans, qr(last[i]+1,n)-i);}for(auto[x,y]:last){if(y!=0)add(y,-1);}cout<<ans<<endl;
}
http://www.jsqmd.com/news/26025/

相关文章:

  • 《程序员修炼之道:从小工到专家》前五分之三观后感
  • C语言typedef用法
  • 美客多接口协议学习
  • Python 模块sys详解
  • 2025-10-29 早报新闻
  • 请问
  • 2024 暑期模拟赛 #5
  • Nordic无线开发---nRF Connect SDK 3.0更新版的安装入门介绍
  • 关于 google 登陆的一些奇妙技巧
  • 移位寄存器 蓝色 与 粉红色 有什么区别
  • 第9天(中等题 滑动窗口)
  • Palantir Ontology 技术深度解析:化繁为简,连接数据与决策的数字孪生
  • CF1196F K-th Path
  • 转换FastText训练数据格式到Parquet(Polars,KIMI)
  • PlantAssistant-VUE属性数据
  • 由 Mybatis 源码畅谈软件设计(四):动态 SQL 执行流程
  • 10.29(续)
  • DicomObjects .NET 8.48.231.0 - 实践
  • 2025.10.29__jyu每日一题题解
  • CSP-J/S2024 游记
  • 以《出师表》作为例子,对比通用分块和父子分块的区别
  • 苏联套娃
  • DP 状态设计
  • winget不可用,一直转圈,文字变蓝色
  • Uno Platform 6.3 发布:支持 .NET 10 预览版并兼容 VS 2026
  • 线段树入门 - idle
  • 2025年10月临江鳝丝店推荐:五家口碑店铺综合对比排行
  • 文档抽取技术在智能合同对比系统中的应用与优势分析
  • 2025年10月临江鳝丝店对比报告:详析五家店铺特色与差异
  • vs2022(2026)离线安装失败的问题解决