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

衡水移动端网站建设精准客源

衡水移动端网站建设,精准客源,自助建站最好的平台,网站建设 中企动力泉州单调队列: 1.单调队列是一个双端队列,支持在队列两端进行插入和删除操作。 2.单调队列的特点是队列中的元素按照一定的单调性排列,常用的有单调递增和单调递减。 3.在插入新元素时,如果新元素破坏了当前的单调性,则在…

单调队列:

1.单调队列是一个双端队列,支持在队列两端进行插入和删除操作。
2.单调队列的特点是队列中的元素按照一定的单调性排列,常用的有单调递增和单调递减。
3.在插入新元素时,如果新元素破坏了当前的单调性,则在队尾删除一部分元素,直到满足单调性要求。这样可以保证队列中的元素保持单调性。
4.单调队列的典型应用是在滑动窗口中寻找最大/最小值的问题

单调队列的实现:

deque<int> que; // 使用deque来实现单调队列// 每次弹出的时候,比较当前要弹出的数值是否等于队列出口元素的数值,如果相等则弹出。// 同时pop之前判断队列当前是否为空。void pop(int value) {if (!que.empty() && value == que.front()) {que.pop_front();}}// 如果push的数值大于入口元素的数值,那么就将队列后端的数值弹出,直到push的数值小于等于队列入口元素的数值为止。// 这样就保持了队列里的数值是单调从大到小的了。void push(int value) {while (!que.empty() && value > que.back()) {que.pop_back();}que.push_back(value);}// 查询当前队列里的最大值 直接返回队列前端也就是front就可以了。int front() {return que.front();}

 题解:

 经典的滑动窗口问题,直接用单调递增队列,和单调递减队列即可,使队头元素为最大值或者是最小值,当超过范围k时从队头弹出元素

#include<iostream>
#include<deque>
#include<vector>
using namespace std;
int x;
struct sd
{int num, val; //存储编号和大小
};
deque<sd> que;
deque<sd> que1;
int add[3][1000005]; //用以存储答案的----见代码
int main()
{int n, m, k, cnt = 1;cin >> n >> k;sd rr;for (int i = 1; i <= n; i++){scanf("%d", &x);  //输入rr.num = i; rr.val = x;  //赋值while (!que.empty() && x >= que.back().val)que.pop_back();  //单调队列的操作,以保证单调while (!que1.empty() && x <= que1.back().val)que1.pop_back();que.push_back(rr); //压入队列que1.push_back(rr);//同上while (i - k >= que.front().num)  //T掉不在范围内的que.pop_front();while (i - k >= que1.front().num)que1.pop_front(); //同上if (i >= k){add[0][cnt] = que.front().val;add[1][cnt] = que1.front().val;cnt++;} //存答案}for (int i = 1; i < cnt; i++)printf("%d ", add[1][i]);printf("\n");for (int i = 1; i < cnt; i++)printf("%d ", add[0][i]);  //输出return 0;
}

 

 图的储存和去重

将队列值用map存储起来,用c++自带函数对其进行去重,最后直接将不符合条件的弹出队列即可

#include<iostream>
#include<map>
#include<deque>
#include<algorithm>
using namespace std;
int t, n;
const int N = 2e5 + 15;
int k;
int a[N];
int main() {cin >> t;while (t--) {int ans = 0;deque<int>que;map<int, int>mp;cin >> n >> k;for (int i = 1; i <= n; i++) {cin >> a[i];++mp[a[i]];}sort(a + 1, a + n + 1);int len = unique(a + 1, a + n + 1) - a - 1;int res = 0;for (int i = 1; i <= len; i++) {while (que.size() && i - que.front() + 1 > k) {res -= mp[a[que.front()]];que.pop_front();}while (que.size() && a[que.back()] != a[i] - 1) {res -= mp[a[que.back()]];que.pop_back();}res += mp[a[i]];que.push_back(i);ans = max(ans, res);}cout << ans << endl;}return 0;
}

http://www.dtcms.com/wzjs/583767.html

相关文章:

  • 晋中推广型网站建设响应式网站模板
  • 2015网站建设源码免费的推广软件下载
  • 企业网站合同山东企业展厅设计公司
  • 宝安网站设计做网站应下哪个软件
  • 微网站建设的第一步是什么做网站有哪些费用
  • 上海做网站内容检查的公司口碑优化seo
  • 建筑网站建设赏析查询网站入口
  • 51我们一起做网站呼和浩特市网站公司电话
  • 单位建设网站的意义wordpress去掉tag标签
  • wordpress怎么启用经典编辑器太原seo整站优化
  • 优秀的网站建设解决方案深圳宝安区是富人区吗
  • 如何开发网站软件app软件WordPress手机缩略图过大
  • 衡阳做网站的获得网站源文件
  • 江西做网站多少钱政协网站信息化建设的作用
  • 重庆专业网站定制某网站注册需要邮箱是怎么弄
  • 网站底部代码下载html网站模板资源
  • php网站开发工程师月薪网站备案号被注销什么原因
  • 奇趣网做网站专门做广东11选5的网站
  • 什么是静态页面网站电商网站如何设计内容
  • 张槎网站建设手把手教你用动易做网站
  • 百度是不是只有在自己的网站发布才会被收录网站开发用笔记本电脑
  • 国内做企业英文网站用什么cms网络架构是什么
  • 网站域名备案需要资料网页培训哪个机构好
  • 网站域名注册备案教程华强北 网站建设
  • 伊犁园xyz视频人入口池州网站优化公司
  • 动易手机网站模板建立一个网站商城需要多久时间
  • 2019银川住房建设规划信息网站网站建设目标文档
  • 网站介绍模板有那种做拼贴的网站吗
  • 做网站源码流程wordpress python脚本
  • 邹城住房城乡建设部网站杭州设计公司被炸