题目背景

四川2009NOI省选

题目描述

小西有一条很长的彩带,彩带上挂着各式各样的彩珠。已知彩珠有N个,分为K种。简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置)。某些坐标上可以没有彩珠,但多个彩珠也可以出现在同一个位置上。

小布生日快到了,于是小西打算剪一段彩带送给小布。为了让礼物彩带足够漂亮,小西希望这一段彩带中能包含所有种类的彩珠。同时,为了方便,小西希望这段彩带尽可能短,你能帮助小西计算这个最短的长度么?彩带的长度即为彩带开始位置到结束位置的位置差。

输入输出格式

输入格式:

第一行包含两个整数N, K,分别表示彩珠的总数以及种类数。接下来K行,每行第一个数为Ti,表示第i种彩珠的数目。接下来按升序给出Ti个非负整数,为这Ti个彩珠分别出现的位置。

输出格式:

输出应包含一行,为最短彩带长度。

输入输出样例

输入样例#1:

6 3
1 5
2 1 7
3 1 3 8
输出样例#1:

3

说明

【样例说明】

有多种方案可选,其中比较短的是1~5和5~8。后者长度为3最短。

【数据规模】

对于50%的数据, N≤10000;

对于80%的数据, N≤800000;

对于100%的数据,1≤N≤1000000,1≤K≤60,0≤Ti<231。

要是省选题都这么友好,岂不美哉?

滑动窗口问题,维护一个队列,队列内包含了所有的颜色,如果队首元素的颜色在队列中出现次数大于1,队首++

 /*by SilverN*/
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
#include<vector>
using namespace std;
const int mxn=;
int read(){
int x=,f=;char ch=getchar();
while(ch<'' || ch>''){if(ch=='-')f=-;ch=getchar();}
while(ch>='' && ch<=''){x=x*+ch-'';ch=getchar();}
return x*f;
}
int n,k;
struct node{
int p,c;
}a[mxn];
int mct=;
int cnt[],cct=;
int cmp(const node a,const node b){
return a.p<b.p;
}
int q[mxn],hd,tl;
int main(){
int i,j,t,x;
n=read();k=read();
for(i=;i<=k;i++){
t=read();
for(j=;j<=t;j++){
x=read();
a[++mct].p=x;
a[mct].c=i;
}
}
sort(a+,a+n+,cmp);
int ans=a[n].p-a[].p;
hd=;tl=;
for(i=;i<=n;i++){
if(!cnt[a[i].c])cct++;
cnt[a[i].c]++;
q[++tl]=i;
while(cnt[a[q[hd]].c]>){
cnt[a[q[hd]].c]--;
hd++;
}
if(cct==k)ans=min(ans,a[q[tl]].p-a[q[hd]].p);
}
printf("%d\n",ans);
return ;
}

最新文章

  1. nodejs持续学习--必须关注4网站
  2. Python--Cmd窗口运行Python时提示Fatal Python error: Py_Initialize: can&#39;t initialize sys standard streams LookupError: unknown encoding: cp65001
  3. C++里的静态成员函数不能用const的原因
  4. spring与mysql整合数据源的配置
  5. 因為 Hypervisor 未執行,所以無法啟動虛擬機器
  6. Oracle-11g-R2(11.2.0.3.x)RAC Oracle Grid &amp; Database 零宕机方式回滚 PSU(自动模式)
  7. copy and Xcopy 复制文件到另一地址
  8. infinite-scroll插件无限滚动加载数据的使用
  9. mongos-sharding连接池配置
  10. 进程命令ps/top/kill
  11. 17)django-模板的继承与导入
  12. Anaconda部署python环境
  13. u-boot移植(十二)---代码修改---支持DM9000网卡
  14. SKlearn库学习曲线
  15. Odoo 8 Graph 视图 之 雷达图 (Radar\Spider)
  16. 基于【CentOS-7+ Ambari 2.7.0 + HDP 3.0】搭建HAWQ数据仓库 —— MariaDB 安装配置
  17. text clf rnn
  18. [转载]金融行业 DevOps 解决方案概述
  19. T-sql 编程
  20. bae使用nodejs遇到的问题---‘Fix depends failed. Please check requirements.txt.’

热门文章

  1. TFS 2015服务端安装与客户端签入项目步骤
  2. python__系统 : socket_UDP相关
  3. php - empty() is_null() isset()的区别
  4. caioj:1682: 【贪心】买一送一
  5. [Luogu1341]无序字母对(欧拉回路)
  6. gcc常用命令
  7. 【转】灰色在PPT中的运用
  8. 使用Html5shiv.js让ie支持html5
  9. win7 64位如何共享XP上的打印机?
  10. 【志银】NYOJ《题目524》A-B Problem