NC20565 [SCOI2009]生日礼物

题目

题目描述

小西有一条很长的彩带,彩带上挂着各式各样的彩珠。已知彩珠有 \(N\) 个,分为 \(K\) 种。简单的说,可以将彩带考虑为 \(x\) 轴,每一个彩珠有一个对应的坐标(即位置)。某些坐标上可以没有彩珠,但多个彩珠也可以出现在同一个位置上。 小布生日快到了,于是小西打算剪一段彩带送给小布。为了让礼物彩带足够漂亮,小西希望这一段彩带中能包含所有种类的彩珠。同时,为了方便,小西希望这段彩带尽可能短,你能帮助小西计算这个最短的长度么?彩带的长度即为彩带开始位置到结束位置的位置差。

输入描述

第一行包含两个整数 \(N, K\),分别表示彩珠的总数以及种类数。

接下来 \(K\) 行,每行第一个数为 \(T_i\) ,表示第 \(i\) 种彩珠的数目。接下来按升序给出 \(T_i\) 个非负整数,为这 \(T_i\) 个彩珠分别出现的位置。

输出描述

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

示例1

输入

6 3
1 5
2 1 7
3 1 3 8

输出

3

备注

对于 \(50\%\) 的数据, \(N\leq 10000\);

对于 \(80\%\) 的数据, \(N\leq 800000\);

对于 \(100\%\)的数据,\(1\leq N\leq 1000000\),\(1\leq K\leq 60\),\(0\leq 珠子位置\leq 2^{31}\)。\(\sum T_i =n\)

题解

思路

知识点:离散化+尺取法。

由于位置超数组模拟的限度,因此离散化每个位置和对应的彩灯类型,节约大部分无效空间。

按位置从小到大排序,注意到对于某一段恰好合法彩带,左端点向右移,右端点不需要复位,因为右端点是以右端点之前所有端点为左端点的合法最小右端点,符合尺取法。

时间复杂度 \(O(n\log n)\)

空间复杂度 \(O(n)\)

代码

#include <bits/stdc++.h>

using namespace std;

pair<int,int> bead[1000007];///离散化每个位置和对应的彩灯类型 60*10^6
int vis[67];///记录尺取区间的种类访问数 int main(){
std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n,k;
cin>>n>>k;
int cnt = 0;
for(int i = 0;i<k;i++){
int t;
cin>>t;
for(int j = 0;j<t;j++){
int pos;
cin>>pos;
bead[cnt++] = make_pair(pos,i);
}
}
sort(bead,bead+cnt);///按位置从小到大排序 int l = 0,r = 0,sum = 0,len = ~(1<<31);
while(l<n){
while(r<n && sum<k){
if(!vis[bead[r].second]) sum++;
vis[bead[r].second]++;
r++;
}///注意r在合法区间的右侧+1位置,因为每次都是最后++,合法之后会再++
if(sum>= k) len = min(len,bead[r-1].first - bead[l].first);///注意距离而不是点个数,是两个位置的差不需要加1
vis[bead[l].second]--;
if(!vis[bead[l].second]) sum--;
l++;
}
cout<<len<<'\n';
return 0;
}

NC20565 [SCOI2009]生日礼物的更多相关文章

  1. 1293: [SCOI2009]生日礼物

    1293: [SCOI2009]生日礼物 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1096  Solved: 584[Submit][Statu ...

  2. BZOJ 1293: [SCOI2009]生日礼物【单调队列】

    1293: [SCOI2009]生日礼物 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2534  Solved: 1383[Submit][Stat ...

  3. bzoj1293[SCOI2009]生日礼物 尺取法

    1293: [SCOI2009]生日礼物 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2838  Solved: 1547[Submit][Stat ...

  4. P2564 [SCOI2009]生日礼物(尺取法)

    P2564 [SCOI2009]生日礼物 三个字.尺取法......... 坐标按x轴排序. 蓝后尺取一下.......... #include<iostream> #include< ...

  5. 【BZOJ1293】[SCOI2009]生日礼物(单调队列)

    [BZOJ1293][SCOI2009]生日礼物(单调队列) 题面 BZOJ 洛谷 题解 离散之后随便拿单调队列维护一下就好了. #include<iostream> #include&l ...

  6. bzoj1293: [SCOI2009]生日礼物(stl堆)

    1293: [SCOI2009]生日礼物 题目:传送门 题解: 据说这道题乱搞随便就水过了 本蒟蒻想到了一个用堆的水法(还专门学了学queue): 如果把每一种颜色的下一个位置都记录一下的话,一开始就 ...

  7. 1293: [SCOI2009]生日礼物 - BZOJ

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

  8. bzoj1293: [SCOI2009]生日礼物

    单调队列 用一个堆维护目前每个颜色在里面的点,每回取出队首点,并更新答案.一旦哪个颜色的点都被用完,跳出循环. #include<cstdio> #include<algorithm ...

  9. [bzoj 1293] [SCOI2009] 生日礼物

    传送门(bzoj) 传送门(luogu) 题目: Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应 ...

随机推荐

  1. Maven中央仓库地址大全

    1.默认的Maven中央仓库  在Maven安装目录下,找到:/lib/maven-model-builder-${version}.jar 打开该文件,能找到超级POM:\org\apache\ma ...

  2. 联想Y7000安装 debian10 wifi 不好使解决方法

    联想Y7000安装 debian10 wifi 不好使解决方法 wifi硬件高通QCA9377 把联想驱动加入黑名单 文件路径 /etc/modprobe.d/blacklist.conf 添加内容 ...

  3. element.insertAdjacentHTML

    一.概念 insertAdjacentHTML() 方法将指定的文本解析为 Element 元素,并将结果节点插入到DOM树中的指定位置.它不会重新解析它正在使用的元素,因此它不会破坏元素内的现有元素 ...

  4. 技术分享 | WEB 端常见 Bug 解析

    对于 WEB 产品来说,有一些常见的 Bug,本章节挑选一些比较典型的 Bug 进行举例介绍. UI Bug 页面展示的时候,需要根据长度的边界值去设计用例进行验证.   一般来说都会有超长内容的验证 ...

  5. python学习番外篇——字符串的数据类型转换及内置方法

    目录 字符串的数据类型转换及内置方法 类型转换 内置方法 优先掌握的方法 需要掌握的方法 strip, lstrip, rstrip lower, upper, islower, isupper 插入 ...

  6. python学习-Day6

    目录 学习内容详述 上期 '猜年龄'练习详解: while循环补充 while + else 死循环与while的嵌套 while嵌套 for循环 range关键字 range用法 什么是爬虫??? ...

  7. 简单的TRPG骰子

    又到了新一年的带团季了,今年准备用电脑来存放各种资料,自然也是需要一个简单的骰子工具了,反正也不复杂,就自己写了个,放着做个备份吧 主要功能是计算x1dy1+/-x2dy2+/-.....+/-con ...

  8. Vulnhub-Tomato靶机实战

    前言 靶机下载地址:https://www.vulnhub.com/entry/tomato-1,557/ KALI地址:192.168.94.108 靶机地址:192.168.94.30 一.信息收 ...

  9. NLP教程(5) - 语言模型、RNN、GRU与LSTM

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/36 本文地址:http://www.showmeai.tech/article-det ...

  10. HCNP Routing&Switching之RSTP

    前文我们了解了vlan优化,vlan聚合技术super vlan相关话题,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/16208997.html:今天我们来聊 ...