传送门:http://codeforces.com/contest/898/problem/D

n个闹钟,第i(1in)个闹钟将在第ai(1ai106)分钟鸣响,鸣响时间为一分钟。当在连续的m分钟内,有至少k个闹钟鸣响,则会被叫醒。现要求关闭一些闹钟,使得在任意连续的m分钟内,鸣响的闹钟数量恒小于k

可以贪心地求解这个问题。

首先,设置一个bool数组ison[],当有闹钟在第i分钟鸣响时,记ison[i]=1,否则ison[i]=0。

接下来,扫描整个时间区间[0..MAX_A]。记当前时间为i,记在区间(i-m..i]={i-m+1,...,i-1,i}上开启的闹钟个数为cnt。扫描时维护cnt,当cnt≥k时,将当前的闹钟关闭即可。

参考程序如下:

#include <stdio.h>
#include <stdbool.h>
#define MAX_A 1000001 bool ison[MAX_A]; int main(void)
{
int n, m, k;
scanf("%d%d%d", &n, &m, &k);
for (int i = ; i < n; i++) {
int a;
scanf("%d", &a);
ison[a] = true;
}
int ans = , cnt = ;
for (int i = ; i < MAX_A; i++) {
if (ison[i]) cnt++;
if (i - m > && ison[i - m]) cnt--;
if (cnt >= k) {
ison[i] = false;
cnt--;
ans++;
}
}
printf("%d\n", ans);
return ;
}

最新文章

  1. 从Script到Code Blocks、Code Behind到MVC、MVP、MVVM
  2. Docker安装CentOS
  3. 简单实用的Log4net帮助类
  4. iOS Swift编程语言
  5. display:inline 和display:inline-block和display:block的区别
  6. sql语句执行插入后返回ID
  7. 让HTML5语义化标签兼容IE浏览器
  8. scala言语基础学习四
  9. red bottom shoes featured
  10. [BZOJ 3110] [Zjoi2013] K大数查询 【树套树】
  11. mud目录命令说明
  12. [Android学习笔记]Unable to execute dex Multiple dex files define:xxxx 问题
  13. OCP-1Z0-051-题目解析-第12题
  14. final 、finally 和 finalize()的区别
  15. libaio.so.1()(64bit) is needed by MySQL-server 问题解决办法
  16. DeleteFile 删除文件
  17. C# Winfrom 进程&amp;多线程
  18. Leetcode 50.Pow(x,n) By Python
  19. Puppet软件资源管理
  20. ==和equal()的区别

热门文章

  1. 数据结构之---C语言实现最短路径之Dijkstra(迪杰斯特拉)算法
  2. 蒟蒻的trie树专题
  3. 设置用root用户telnet到linux系统
  4. 请问在C#的Winform下如何用正则表达式限制用户只能在textBox中输入18位的身份证号码。
  5. Python中的math和保留小数位数方法
  6. gulp安装成功但是无法使用
  7. PCB 周期计算采用 SQL 函数调用.net Dll 标量函数 实现
  8. bzoj1143(2718)[CTSC2008]祭祀river(最长反链)
  9. 原生JS---3
  10. POJ 1149 PIGS (AC这道题很不容易啊)网络流