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

P1997 faebdc 的烦恼+P7764 [COCI 2016/2017 #5] Poklon(莫队)

P1997 faebdc 的烦恼 - 洛谷

题目大意:给你一个数组,然后进行q次询问,每次输出区间[l,r]中数字出现最多的次数。

思路:很板的莫队了。这里的add函数写得还是很妙的,cnt[x]表示x出现的次数,sum[cnt[x]]表示出现cnt[x]次数的数字个数。每次进行相应add和sub操作时更新这两个数组以及结果。

Code:

int n,q;
int pos[N],ans[N],cnt[N],a[N],sum[N];
unordered_map<int,int> mp;
int res,m,num;
struct node{int l,r,id;
}tr[N];void add(int x)
{sum[cnt[x]]--;cnt[x]++;sum[cnt[x]]++;if(res<cnt[x]) res=cnt[x];
}void sub(int x)
{sum[cnt[x]]--;cnt[x]--;sum[cnt[x]]++;if(res==cnt[x]+1&&!sum[cnt[x]+1]){res=cnt[x];}
}
void solve()
{cin>>n>>q;int sz=sqrt(n);for(int i=1;i<=n;i++) {cin>>a[i];if(!mp[a[i]]) mp[a[i]]=++num;pos[i]=i/sz;}m=*max_element(a+1,a+1+n);for(int i=1;i<=q;i++){int l,r;cin>>l>>r;tr[i]={l,r,i};}sort(tr+1,tr+q+1,[&](node x,node y){return (pos[x.l]==pos[y.l]?x.r<y.r:pos[x.l]<pos[y.l]);});int l=1,r=0;for(int i=1;i<=q;i++){while(tr[i].l<l) add(mp[a[--l]]);while(tr[i].r>r) add(mp[a[++r]]);while(tr[i].l>l) sub(mp[a[l++]]);while(tr[i].r<r) sub(mp[a[r--]]);ans[tr[i].id]=res;}for(int i=1;i<=q;i++) cout<<ans[i]<<endl;} 

P7764 [COCI 2016/2017 #5] Poklon - 洛谷

题目大意:给定一个长度为n的数组,进行q次询问,每次输出[l,r]中出现次数为2的数字个数。

思路:与上题一致,但这道题要提前将a[i]=mp[a[i]],不然后面每次询问进行四次map的查找会TLE一个点。

Code:

int n,q,sz;
int pos[N],cnt[N],a[N],sum[N],res,ans[N];
unordered_map<int,int> mp;
int num;
struct node{int l,r,id;
}tr[N];void add(int x)
{sum[cnt[x]]--;cnt[x]++;sum[cnt[x]]++;
}void sub(int x)
{sum[cnt[x]]--;cnt[x]--;sum[cnt[x]]++;
}void solve()
{cin>>n>>q;sz=sqrt(n);for(int i=1;i<=n;i++) {cin>>a[i];if(!mp[a[i]]) mp[a[i]]=++num;a[i]=mp[a[i]];pos[i]=i/sz;}for(int i=1;i<=q;i++){int l,r;cin>>l>>r;tr[i]={l,r,i};}sort(tr+1,tr+q+1,[&](node x,node y){return pos[x.l]==pos[y.l]?x.r<y.r:pos[x.l]<pos[y.l];});int l=1,r=0;for(int i=1;i<=q;i++){while(tr[i].l<l) add(a[--l]);while(tr[i].r>r) add(a[++r]);while(tr[i].l>l) sub(a[l++]);while(tr[i].r<r) sub(a[r--]);ans[tr[i].id]=sum[2];}for(int i=1;i<=q;i++) cout<<ans[i]<<endl;
} 

http://www.dtcms.com/a/585602.html

相关文章:

  • Nginx请求超时
  • 基于单片机的交流功率测量仪设计与实现
  • Zookeeper实现分布式锁
  • 好看的个人网站设计专做轮胎的网站
  • VGG论文精细解读
  • 抖音自动化-实现给特定用户发私信
  • 安徽省教育基本建设学会网站查看网站被百度收录
  • LeetCode算法学习之旋转数组
  • webrtc降噪-NoiseSuppressor类源码分析与算法原理
  • openEuler容器化实践:从Docker入门到生产部署
  • Spring Security实战代码详解
  • ES6 Promise:告别回调地狱的异步编程革命
  • 企业网站备案教程免费建设网站抽取佣金
  • seo网站诊断流程公司网站建设费用会计处理
  • 与Figma AI对话的对话框在哪里?
  • 【科研绘图系列】R语言绘制微生物箱线图(box plot)
  • 禅城区网站建设管理网站模板下载免费下载
  • 前端微服务化
  • Linux 软件安装 “命令密码本”:yum/apt/brew 一网打尽
  • 做网站框架显示不出来中国最大的软件公司
  • 轻量级云原生体验:在OpenEuler 25.09上快速部署单节点K3s
  • 程序员 给老婆做网站网站建设 海南
  • 解释 StringRedisTemplate 类和对象的作用与关系
  • MATLAB遗传算法优化RVFL神经网络回归预测(随机函数链接神经网络)
  • 建设网站的知识竞赛国家建设网站
  • ROS2 Humble 笔记(七)标准与自定义 Interface 接口
  • 深入探索序列学习:循环神经网络(RNN)及其变体(LSTM、GRU)的详尽解析
  • 永川区做网站临沂网站建设方案报价
  • B哩B哩车机版专为汽车端或大屏设备开发
  • 一种基于视网膜图像的深度学习系统 DeepRETStroke