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

单调队列,滑动窗口

#include<bits/stdc++.h> using namespace std; int main() { int n; cin>>n; vector<int>a(n); int k; cin>>k; for(int i=0;i<n;i++) { cin>>a[i]; } deque<int>q; vector<int>ans; ==最大值== for(int i=0;i<n;i++) { while(!q.empty()&&q.front()+k<=i) { q.pop_front(); }//判断此时的滑动窗口是否已满,满的话执行,去掉队首 while(!q.empty()&&a[q.back()]<=a[i]) { q.pop_back(); }//在找最大值的时候,有比a[i]要小的元素,因此不能让它留在队首,要去掉 q.push_back(i);//让新的下标进入队列 if(i>=k-1)ans.push_back(a[q.front()]);//在达到滑动窗口的大小后,都会判出一个最大值 } vector<int>cnt; deque<int>q_min; 最小值 for(int i=0;i<n;i++) { while(!q_min.empty()&&q_min.front()+k<=i) { q_min.pop_front(); } while(!q_min.empty()&&a[q_min.back()]>=a[i]) { q_min.pop_back(); } q_min.push_back(i); if(i>=k-1)cnt.push_back(a[q_min.front()]); } for(int x:cnt) { cout<<x<<" "; } cout<<endl; for(int y:ans) { cout<<y<<" "; } }

题目大意:在不超过m的滑动窗口中,找到最大和

#include<bits/stdc++.h> using namespace std; int main() { int n,m; cin>>n>>m; vector<int> a(n + 1); for (int i = 1; i <= n; ++i) { cin >> a[i]; } // 1. 计算前缀和 vector<int> s(n + 1, 0); for (int i = 1; i <= n; ++i) { s[i] = s[i - 1] + a[i]; } deque<int>q; int ans=-1e18; for(int i=0;i<n;i++) { while(!q.empty()&&q.front()+m<i) { q.pop_front(); }//判断滑动窗口是否满了,满的话出队 if(!q.empty()) ans=max(ans,s[i]-s[q.front()]);//留下每一次滑动窗口下最大的和 while(!q.empty()&&s[q.back()]>=s[i]) q.pop_back();//如果该下标下的前缀和大于后者的前缀和,这把这个下标除去,因为减的越大,留下的越小,要留下较大的 q.push_back(i);//下标入队 } cout<<ans<<endl; }

题目大意:在出现的所有时间下,算时间差在86400内不同国家的个数

#include<bits/stdc++.h> using namespace std; #define int long long #define endl '\n' #define pii pair<int,int> #define fi first #define se second const int N=101; void slove(){ int n; cin>>n; queue<pair<int,vector<int>>>q; vector<int>cnt(100005,0); int ans=0; for(int i=0;i<n;i++) { int t,k; cin>>t>>k; vector<int>s(k); for(int i=0;i<k;i++) { cin>>s[i]; } //把不在这个时间差的国家从不同国家数中除去 while(!q.empty()&&q.front().first<=t-86400) { auto& ship=q.front(); for(int country:ship.second) { cnt[country]--; if(cnt[country]==0) { ans--; } } q.pop(); } //记录不同国家数 for(int country:s) { if(cnt[country]==0) ans++; cnt[country]++; } q.push({t,s}); cout<<ans<<endl; } } signed main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int _=1; //cin>>_; while(_--) slove(); return 0; }
http://www.jsqmd.com/news/1238831/

相关文章:

  • 【Dify文本生成应用私密部署手册】:金融/医疗行业合规落地的4层安全加固方案(附审计通过率100%配置清单)
  • map文件找栈溢出
  • 国产替代加速,六岳微电子完成5亿元A轮融资
  • AI Remix工具推荐|合规曲风改编、老歌重制工具真实使用分享
  • 悟空AI CRM开源版:智能销售工具的技术架构与应用
  • 62.RAG-RAG问题的优化
  • ZFX山海证券:从公开信息出发,盘点服务体系与风险提示
  • Claude Code极简安装与高效使用指南
  • Kimi K3模型中文思维链优化:从英文主导到中文友好的实战指南
  • TI SoC时钟系统深度解析:PRCM模块与DPLLLJ架构实战指南
  • 如何高效运用Office.js构建企业级Office插件?
  • Cursor与OpenClaw:移动端AI编程工具的革命性突破
  • 2026年测评:靠谱的AI超级员工厂家揭秘
  • 网络攻防实践课程:从理论到实战的网络安全教学
  • 鸿蒙 韶非 UI 系列:关系数据库 @ohos.data.relationalStore,鸿蒙 SQLite 封装,结构化数据存取入门
  • AI音乐改编软件推荐,AI Remix与曲风重制实操指南
  • 别被and/or坑哭了!Python逻辑运算符,90%新手都踩过这雷
  • 嵌入式开发核心:GPIO中断配置与I2C总线通信实战详解
  • 制造业数字化落地完整流程:从调研、需求梳理到验收落地全链路|先业务后系统,避开 90% 项目烂尾坑
  • 2026年7月最新天梭西安小寨银泰百货维修保养服务电话 - 天梭服务中心
  • MQTT协议在储能系统数据采集中的优化实践
  • Unity安卓游戏集成百度语音SDK:实现语音控制角色移动与技能释放
  • 深入解析Godot资源反序列化:从原理到实战应用
  • 嵌入式Linux蜂鸣器驱动开发与设备树配置实战
  • LLM智能体在5G/6G网络自动化中的架构与实践
  • n8n自动化平台CVE-2026-25049漏洞分析与防护
  • AI教材写作工具:教育内容生产的新范式与核心技术
  • AI论文工具如何提升MBA论文写作效率
  • AI曲风改编工具有哪些?老歌换风格、Remix重制工具实测分享
  • Microsoft服务器核心端口配置与安全实践指南