尺取法 P1638 逛画展
P1638 逛画展 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
题意:
其实就是求刚好拥有所有m种数字的最短区间
思路:
尺取法
当区间内数字种数刚好为m时记录一下最小区间长度
用map的类似于滑动窗口的办法维护区间数字种数
注意多解的情况需要以L排序,L最小的优先
Code:
#include <bits/stdc++.h>
using namespace std;
const int mxn=1e6+10,mnf=0x3f3f3f3f;
struct ty{int minn,L,R;
}p[mxn];
bool cmp(ty x,ty y){return x.L<y.L;
}
vector<ty> v,ans;
unordered_map<int,int> mp;
int n,m,r=0,sum=0,mi=mnf,ansl,ansr;
int a[mxn];
int main(){scanf("%d%d",&n,&m);for(int i=1;i<=n;i++) scanf("%d",&a[i]);for(int l=1;l<=n;l++){while(r<n&&sum<m){r++;if(!mp[a[r]]) sum++;mp[a[r]]++;}if(sum>=m){if(mi>r-l+1){mi=r-l+1;ansl=l;ansr=r;v.push_back({mi,ansl,ansr});}mp[a[l]]--;if(!mp[a[l]]) sum--;}}for(int i=0;i<v.size();i++){if(v[i].minn==mi) ans.push_back(v[i]);}sort(ans.begin(),ans.end(),cmp);printf("%d %d\n",ans[0].L,ans[0].R);return 0;
}
总结:
1.map可维护区间元素种类数
2.要遍历满足某条件的区间且这个条件是单调的就可以使用尺取法
尺取法 P1638 逛画展相关推荐
- 洛谷 P1638 逛画展
洛谷 P1638 逛画展 题目链接 题目描述 博览馆正在展出由世上最佳的 M 位画家所画的图画. wangjy想到博览馆去看这几位大师的作品. 可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必 ...
- P1638 逛画展——尺取法的妙用
题目描述 博览馆正在展出由世上最佳的 mm 位画家所画的图画. 游客在购买门票时必须说明两个数字,aa 和 bb,代表他要看展览中的第 aa 幅至第 bb 幅画(包含 a,ba,b)之间的所有图画,而 ...
- 洛谷 [P1638 逛画展] (尺取法)
Link https://www.luogu.org/problemnew/show/P1638 Description 博览馆正在展出由世上最佳的 M 位画家所画的图画.wangjy想到博览馆去看 ...
- P1638 逛画展(尺取)
逛画展 - 洛谷https://www.luogu.com.cn/problem/P1638 #include <iostream> #include <cstdio> #in ...
- 洛谷P1638 逛画展
题目描述 博览馆正在展出由世上最佳的 m 位画家所画的图画. 游客在购买门票时必须说明两个数字,a 和 b,代表他要看展览中的第 a 幅至第 b 幅画(包含 a,b)之间的所有图画,而门票的价钱就是一 ...
- P1638 逛画展(直尺法)
这道题是直尺法的模板题: #include<iostream> using namespace std; const int maxn = 1e6 + 5; const int M = 2 ...
- P1638 逛画展(C语言)
题目描述 博览馆正在展出由世上最佳的 m 位画家所画的图画. 游客在购买门票时必须说明两个数字,a 和 b,代表他要看展览中的第 a 幅至第 b 幅画(包含 a,b)之间的所有图画,而门票的价钱就是一 ...
- 洛谷P1638 逛画展-最简单的双指针做法
思路:定义双指针x和y代表[x,y]区间,初始化x=y=0开始遍历,刚开始时一直增加y直到包含了所有作家的画,然后就从左边x开始删区间有重复作家的画就行.注意不要把任何一个作家的画删到0!! 代码如下 ...
- [Luogu]P1638逛画展
注意到满足要求的区间具有单调性,于是想到用滑动窗口. 区间具有单调性,即若[L,R]满足条件, [L,R+1]必满足条件,并且[R+1,L]有可能满足条件.如此一来不用O(n^2)枚举左右端点,这样去 ...
最新文章
- Java一行一行的读文件和简单的写文件
- flink mysql日志,关于flink的日志文件设置
- ILRuntime_NewbieGuide—入门
- asp.net中的加密方法
- python第三方库tkinter之Label控件和Button控件
- 科学网—中文普通话语音识别DEMO,LilyMandarinSpeechRecognition V1.0 - 石自强的博文...
- jmeter之使用代理录制脚本
- 区块链 xuperchain 同步模式 纯异步模式 异步阻塞模式 怎么启动
- CSDN程序员研修院课程无法下载
- 在Access数据库中使用SQL查询分析器
- 几种短距离无线通信技术及未来展望
- PTA 求链式线性表的倒数第K项 给定一系列正整数,请设计一个尽可能高效的算法,查找倒数第K个位置上的数字。
- Python提取信息测试
- 【python】Flask之session使用
- 【YOLOV5-5.x 源码解读】train.py
- 区块链知识系列 - BTC和ETH的区别
- python的flask框架
- python绘制剖面图_Python气象绘图教程—(十九)剖面图
- ant-design中取消tab激活时候的下划线、以及修改tab激活时候下划线颜色
- 修复VMware网络连接失败及设置固定IP