[SCOI2009]生日礼物题解
一道模拟和队列题,但模拟比队列的成分多一些。队列也就是用两个指针模拟的。
可以用枚举的思想。首先我们知道r(即区间的右端点是肯定不会左移的),而l右移的同时,r可能不变,也可能右移,所以这样就可以不用\(O(n^2)\)处理了,剩下的就只剩下模拟的细节。
#include <bits/stdc++.h>
#include <queue>
using namespace std;
struct ha {
int a, x;
}data[1010011];
int n, k, cnt, minn = 2147483647, tong[100100];//tong表示桶
bool cmp(ha a, ha b)
{
return a.x < b.x;
}
int main()
{
scanf("%d%d", &n, &k);
for (int i = 1; i <= k; i++)
{
int t; scanf("%d", &t);
while (t--)
{
scanf("%d", &data[++cnt].x);
data[cnt].a = i;
}
}
sort(data + 1, data + 1 + cnt, cmp);
int l = 0, r = 0;
int sum = 0;
while (r < n)
{
while (r < n && sum < k)
{
if (sum == k) break;
r++;
tong[data[r].a]++;
if (tong[data[r].a] == 1)
sum++;
}
l++;
minn = min(minn, data[r].x - data[l].x);
if (tong[data[l].a] == 1)
sum--;
tong[data[l].a]--;
}
printf("%d", minn);
}
[SCOI2009]生日礼物题解的更多相关文章
- BZOJ1293:[SCOI2009]生日礼物——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1293 https://www.luogu.org/problemnew/show/P2564#sub ...
- 1293: [SCOI2009]生日礼物
1293: [SCOI2009]生日礼物 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1096 Solved: 584[Submit][Statu ...
- 【BZOJ1293】[SCOI2009]生日礼物(单调队列)
[BZOJ1293][SCOI2009]生日礼物(单调队列) 题面 BZOJ 洛谷 题解 离散之后随便拿单调队列维护一下就好了. #include<iostream> #include&l ...
- bzoj1293: [SCOI2009]生日礼物(stl堆)
1293: [SCOI2009]生日礼物 题目:传送门 题解: 据说这道题乱搞随便就水过了 本蒟蒻想到了一个用堆的水法(还专门学了学queue): 如果把每一种颜色的下一个位置都记录一下的话,一开始就 ...
- NC20565 [SCOI2009]生日礼物
NC20565 [SCOI2009]生日礼物 题目 题目描述 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有 \(N\) 个,分为 \(K\) 种.简单的说,可以将彩带考虑为 \(x\) ...
- BZOJ 1293: [SCOI2009]生日礼物【单调队列】
1293: [SCOI2009]生日礼物 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2534 Solved: 1383[Submit][Stat ...
- bzoj1293[SCOI2009]生日礼物 尺取法
1293: [SCOI2009]生日礼物 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2838 Solved: 1547[Submit][Stat ...
- P2564 [SCOI2009]生日礼物(尺取法)
P2564 [SCOI2009]生日礼物 三个字.尺取法......... 坐标按x轴排序. 蓝后尺取一下.......... #include<iostream> #include< ...
- [bzoj 1293] [SCOI2009] 生日礼物
传送门(bzoj) 传送门(luogu) 题目: Description 小西有一条很长的彩带,彩带上挂着各式各样的彩珠.已知彩珠有N个,分为K种.简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应 ...
随机推荐
- .net 简单实用Log4net(多个日志配置文件)
前言: 几乎所有的大型应用都会有自己的用于跟踪调试的API.因为一旦程序被部署以后,就不太可能再利用专门的调试工具了.然而一个管理员可能需要有一套强大的日志系统来诊断和修复配置上的问题.所以这个时候就 ...
- Django学习之九: auth 认证组件
目录 Django auth 认证组件 配置使用auth组件及其中间件 request.user 可以直接在template模版中使用 auth组件常用api 获取认证model类 认证检测装饰器@l ...
- 如何去掉(隐藏)系统的StatusBar(状态栏)
在定制TV版本中,经常需要去掉StatusBar的需求,那么如何更好更方便的去掉StatusBar呢? StatusBar是Android系统中重要的组成部分,可以看到一些提 ...
- linux_FTP连接失败
service vsftpd status vim /etc/vstpd/vsfptd.conf service vsftpd restart service iptables status serv ...
- HTML+Css让网页自动适应电脑手机屏幕
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scal ...
- js坚持不懈之18:trim()方法
trim()方法,类似Python中的strip(),用去去除字符串对象前后的空格. <!DOCTYPE html> <html> <body> <scrip ...
- 【记录】使用在线KMS激活win10系统
摘要 网上一些激活工具可能捆绑了木马.病毒.使用激活工具有风险.使用在线KMS来激活系统则没有这个风险.(自测至发布日期仍然可用) (有能力的请支持正版windows系统) 将kms服务器地址设置为k ...
- Fix: Unable to terminate process ‘Access is denied’ 杀进程,关服务
https://appuals.com/fix-unable-to-terminate-process-access-is-denied/ 我 Process Hacker (方法3),成功杀掉: 阿 ...
- Windows上安装MySQL的完整教程
1. 首先去官方网站下载压缩文件:https://dev.mysql.com/downloads/mysql/ 2. 解压下载的文件. 3. 将解压的所有文件放在一个文件夹里( ...
- 教你在浏览器里做出EXCEL的效果
在浏览器里做出EXCEL的效果,复制.粘贴.设置公式.双击编辑等效果,如果自己开发的话,比较麻烦,建议使用成熟的插件.这里介绍使用智表ZCELL插件,实现用户快捷操作. 首先下载插件,引入到页面中,一 ...