[Codeforces958F2]Lightsabers (medium)(思维)
Description
Solution
设一个l指针指向当前数列左边,从左往右扫描一遍,将当前颜色记录,
当所有颜色都得到后,进行判断,如果当前l指向的颜色大于需要的颜色,l后移一位,然后更新答案
Code
#include <cstdio>
#include <set>
#define N 200010
using namespace std; set<int> q;
int n,m,col[N],cnt[N],k[N],Ans=1e9,sum,l=1,r; inline int read(){
int x=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
return x*f;
} int main(){
freopen("in.txt","r",stdin);
n=read(),m=read();
for(int i=1;i<=n;col[i++]=read());
for(int i=1;i<=m;++i){
if(k[i]=read()) q.insert(i);
sum+=k[i];
}
for(r=1;r<=n;++r){
if(++cnt[col[r]]==k[col[r]]) q.erase(col[r]);
if(q.empty()){
while(l<=r&&cnt[col[l]]>k[col[l]]) cnt[col[l++]]--;
Ans=min(Ans,r-l+1-sum);
}
}
if(Ans==1e9) Ans=-1;
printf("%d\n",Ans);
return 0;
}
[Codeforces958F2]Lightsabers (medium)(思维)的更多相关文章
- Codeforces 958F2 Lightsabers (medium) 尺取法
		
题目大意: 输入n,m,分别表示人的个数和颜色的个数,下一行输入n个数,对应每个人的颜色,最后一行输入对应每个颜色的人应有的数量: 问是否能找出一个区间,满足条件但有多余的人,输出多余的人最少的个数, ...
 - 转发一篇好文:36氪翻译自medium的文章: 读书没有 KPI:为什么坚持“一年读 100 本书”没用?
		
你只是为了达成所谓的数量目标而读书. 编者按:读书本是一项安静.缓慢的活动,但随着现代社会节奏的加快,信息技术的广泛普及,读书这一行为模式也开始发生了变化.越来越多的人开始碎片化阅读,并且越来越多的文 ...
 - 1、学习算法和刷题的框架思维——Go版
		
前情提示:Go语言学习者.本文参考https://labuladong.gitee.io/algo,代码自己参考抒写,若有不妥之处,感谢指正 关于golang算法文章,为了便于下载和整理,都已开源放在 ...
 - [C#][算法] 用菜鸟的思维学习算法 -- 马桶排序、冒泡排序和快速排序
		
用菜鸟的思维学习算法 -- 马桶排序.冒泡排序和快速排序 [博主]反骨仔 [来源]http://www.cnblogs.com/liqingwen/p/4994261.html 目录 马桶排序(令人 ...
 - Photoshop、Illustrator思维导图笔记
		
半年前学习Photoshop时记得的思维导图笔记,可能不是很全,常用的基本都记下了.
 - CYQ.Data 从入门到放弃ORM系列:开篇:自动化框架编程思维
		
前言: 随着CYQ.Data 开始回归免费使用之后,发现用户的情绪越来越激动,为了保持这持续的激动性,让我有了开源的念头. 同时,由于框架经过这5-6年来的不断演进,以前发的早期教程已经太落后了,包括 ...
 - 计算机程序的思维逻辑 (8) - char的真正含义
		
看似简单的char 通过前两节,我们应该对字符和文本的编码和乱码有了一个清晰的认识,但前两节都是与编程语言无关的,我们还是不知道怎么在程序中处理字符和文本. 本节讨论在Java中进行字符处理的基础 - ...
 - 计算机程序的思维逻辑 (29) - 剖析String
		
上节介绍了单个字符的封装类Character,本节介绍字符串类.字符串操作大概是计算机程序中最常见的操作了,Java中表示字符串的类是String,本节就来详细介绍String. 字符串的基本使用是比 ...
 - 计算机程序的思维逻辑 (31) - 剖析Arrays
		
数组是存储多个同类型元素的基本数据结构,数组中的元素在内存连续存放,可以通过数组下标直接定位任意元素,相比我们在后续章节介绍的其他容器,效率非常高. 数组操作是计算机程序中的常见基本操作,Java中有 ...
 
随机推荐
- 转:清除arcsde空间垃圾数据以及解决sde图层名称被占用的问题
			
因为对空间数据管理的不善(非法的删除.重命名等),导致sde中存在一些垃圾数据.和图层名称被占用,这种问题已经有好几个同事问我怎么解决了?现把这个问题已经解决了,下面将整个详细过程写出来,共享给碰到同 ...
 - C++ Knowledge series Layering
			
Programming has its own methodology. Layering is everywhere in real life,this why the pruchase and s ...
 - selenium select 标签选中
			
public static int SetSelectedIndex(this IWebDriver webdriver, string selector, int selectedIndex) { ...
 - 爆料!如何在Visual Studio 2017上体验五星级云服务
			
2017 年 3 月初,号称宇宙最强 IDE 之一的 Visual Studio 发布了最新的 2017 版本,遥想自己使用 VC++ 6.0 的当年,看着现在已然稀疏的头发,真是一入 IT 似海深, ...
 - kubernetes组件helm
			
1.安装helm Helm由客户端helm命令行工具和服务端tiller组成,Helm的安装十分简单. 下载helm命令行工具到master节点node1的/usr/local/bin下(只需要在其中 ...
 - 超好用的一个JQUERY分页器-jpaginate
			
jpaginate是一个自带滑动动画效果的jQuery分页插件,用户可以通过单击或只是悬停在箭头上的使页码滑动显示. 你可以用下面的方式调用插件: $(elementID).paginate() 您可 ...
 - SINAMICS S120/S120 EPOS 基本定位修改方向
			
步骤 修改 P1821 (在线修改需要P10=3) 修改完成,copy ram to rom / load to PG
 - node实现爬虫
			
node实现获取到豆瓣电影排行榜页面. 准备工作: 1.新建一个文件夹node 在当前文件夹中打开cmd 下载 npm install 初始化 npm init(注意一下:如果你的npm init没有 ...
 - 94. Binary Tree Inorder Traversal(inorder )  ***(to be continue)easy
			
Given a binary tree, return the inorder traversal of its nodes' values. Example: Input: [1,null,2,3] ...
 - 课程设计__C++初步,C++对C的扩充
			
小草的C++要结课了,小草终于翻起书来,小草用的老谭的书,有什么不对的就找老谭去吧. ///C++初步 ///C++对C的扩展 #include <iostream> using name ...