acwing 651.逛画展(队列)
acwing 651.逛画展(队列)
算法:(数组模拟队列)
思路:由题意为避免TLE易想到用队列来遍历;
(牢记队列的特点:两端都为口,像一个中空的管子一样;拿它来遍历数组)
每当画家不是遇到第一次了,队列头后移;每一轮队列尾都后移;
直到发现符合题意的队列,就尝试更新答案,直到最优解
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6+5;
int n,m;
typedef pair<int,int> PII;
PII ans;
int a[N]; //a数组储存n幅画它的画家序号序列;
int cnt[2005]; //记录队列遍历a数组时候每个画家出现了多少次
int hh=1,tt=0; //队列头,队列尾
int main ()
{cin.tie(0);ios::sync_with_stdio(false);cin>>n>>m;int k=0; //K记录队列中有多少个新遇见的画家 ans={1,1e6};//初始化答案为最大的 for (int i=1;i<=n;i++) cin>>a[i];for (int i=1;i<=n;i++){while (hh<=tt&&cnt[a[hh]]>1) cnt[a[hh]]--,hh++; //队列头的画家出现过,计数减一,队列头后移 if (hh<=tt&&k==m) if (tt-hh<ans.second-ans.first) ans={hh,tt}; //一旦发现符合题意(画家全部出现过)的队列,答案更新为更短的队列左端和右端 tt=i; //每轮队列尾后移 cnt[a[tt]]++; //队列尾后移计数加一 if (cnt[a[tt]]==1) k++; //一旦队列尾出现的画家是新遇见的,K加一 }cout<<ans.first<<' '<<ans.second;return 0;
}
acwing 651.逛画展(队列)相关推荐
- 【洛谷 P1638】 【单调队列】 逛画展
[洛谷 P1638] [单调队列] 逛画展 题目 解题思路 先求出最前面囊括所有画的位置 然后如果左边界的画不止存在一次,左边界右移 不断扩展右边界,求取答案 代码 #include<iostr ...
- 洛谷 P1638 逛画展
洛谷 P1638 逛画展 题目链接 题目描述 博览馆正在展出由世上最佳的 M 位画家所画的图画. wangjy想到博览馆去看这几位大师的作品. 可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必 ...
- acwing 3548.双端队列
acwing 3548.双端队列 链接:https://www.acwing.com/problem/content/3551/ 题目描述 给定一个双端空队列,有两种插入和一种读取操作 插入:向左端或 ...
- P1638 逛画展——尺取法的妙用
题目描述 博览馆正在展出由世上最佳的 mm 位画家所画的图画. 游客在购买门票时必须说明两个数字,aa 和 bb,代表他要看展览中的第 aa 幅至第 bb 幅画(包含 a,ba,b)之间的所有图画,而 ...
- 尺取法 P1638 逛画展
P1638 逛画展 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 其实就是求刚好拥有所有m种数字的最短区间 思路: 尺取法 当区间内数字种数刚好为m时记录一下最小区间长度 ...
- P1638 逛画展(尺取)
逛画展 - 洛谷https://www.luogu.com.cn/problem/P1638 #include <iostream> #include <cstdio> #in ...
- 逛画展(单调队列) acm寒假集训日记22/1/1
题目如下: AC代码如下: #include<iostream> #include<cstdio> #include<algorithm> #include< ...
- 【队列】C002_逛画展(单调队列)
一.Problem 博览馆正在展出由世上最佳的 M 位画家所画的图画.wangjy想到博览馆去看这几位大师的作品. 可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必须说明两个数字,a 和 b, ...
- 逛画展(二分+队列)
题目: 见https://www.luogu.com.cn/problem/P1638 思路: 我以为我这么做会超时来着,没想到ac了,具体思路就是:为了满足题目要求即花最少的钱,那么我们就二分区间长 ...
最新文章
- 运行从别处复制过来的linux可执行程序
- AI学高数达到MIT本科水平,学了微积分线性代数概率论等6门课,不光能做题还能出题...
- 【MCTalk Live】网易对话谷歌:如何成为一个顶50个的A+++++程序员
- [网络安全自学篇] 四十二.DNS欺骗和钓鱼网站原理详解及防御机理
- 不同版本操作系统和数据库的之间链接,和操作
- odps sql 日期函数处理
- 百度认证(深度学习初级工程师)考试题1
- 开发一款APP都有哪些流程?
- 计算机专业哪个考研简单,考研哪些专业比较简单好考?
- 2018年Android面试题含答案
- Python包pretty_errors
- 用计算机弹霜雪千年,霜雪千年(完整版)-双笙-和弦谱-《弹吧》官网tan8.com-和弦谱大全,学吉他,秀吉他...
- sqlite 查询效率对比
- python的环境问题相关
- ESP32 NVS同windows文件系统的类比,附上一段NVS操作的代码解析
- 关于数据挖掘中“多重共线性”的确定方法(有图有真相)
- android tv闹钟_Android 平台有哪些闹钟应用值得推荐?
- mysql5.5升级至5.7
- 新版蜀山剑侠传3D立体格斗全方位剖析
- rimworld简单机器人mod_rimworld智能机器人MOD