1301 - Monitoring Processes
| Time Limit: 3 second(s) | Memory Limit: 32 MB |
We have planned to design a new operating system. Like other OS we will use the techniques of processes, schedulers, locks etc. The basic plan is to use the OS in hardwires that have low configurations. So, efficiency matters. That's why we want to minimize the cost as well as the power consumption. To be more specific, there are n processes, and each process starts its execution in timestamp si, and ends its execution in timestamp ti. For simplicity assume that the timestamps are represented as integers. Now when a process is being executed, we need a wrapper program to look after the process. The reason behind using wrapper programs is that, they will continuously check the processes and if any process tries to harm the system or wants to take hold of some restricted resources or even tries to invoke some forbidden methods, the wrapper will halt the process and generate appropriate error signals. But the problem is that a wrapper program cannot monitor more than one process in any timestamp and when it's been assigned to a process, it will have to wait until the process finishes. But after this, the same wrapper program can be used for monitoring another process. So, a wrapper program can be used for multiple processes but not more than one in any timestamp.
So, we have the process schedules and we want to find the number of wrapper programs to monitor them according to the given restrictions. As you are the leading programmer of this project, you are asked to find the minimum number of wrapper programs to monitor all the processes.
Input
Input starts with an integer T (≤ 20), denoting the number of test cases.
Each case starts with a line containing an integer n (1 ≤ n ≤ 50000). Each of the next n lines contains two integers si ti (1 ≤ si ≤ ti ≤ 109).
Output
For each case, print the case number and the minimum number of wrapper programs to monitor all the processes.
Sample Input |
Output for Sample Input |
|
2 2 1 3 3 5 4 1 10 10 20 11 21 3 5 |
Case 1: 2 Case 2: 2 |
Note
Dataset is huge, use faster I/O methods.
1 #include<stdio.h>
2 #include<algorithm>
3 #include<iostream>
4 #include<string.h>
5 #include<stdlib.h>
6 #include<queue>
7 #include<set>
8 using namespace std;
9 typedef long long LL;
10 typedef struct pp
11 {
12 int x;
13 int y;
14 int id;
15 } ss;int maxx;
16 ss ans[50005];
17 int ak[200000];
18 int tree[200000*4];
19 void in(int n,int m,int l,int r,int k)
20 {
21 if(l>m||r<n)
22 {
23 return ;
24 }
25 else if(l<=n&&r>=m)
26 {
27 tree[k]+=1;
28 return ;
29 }
30 else
31 {
32 in(n,(n+m)/2,l,r,2*k+1);
33 in((n+m)/2+1,m,l,r,2*k+2);
34 }
35 }
36 void fang(int n,int m,int k)
37 {
38 if(n==m)
39 { if(tree[k]>maxx)
40 maxx=tree[k];
41 return ;
42 }
43 else
44 {
45 tree[2*k+1]+=tree[k];
46 tree[2*k+2]+=tree[k];
47 fang(n,(n+m)/2,2*k+1);
48 fang((n+m)/2+1,m,2*k+2);
49 }
50 }
51 int main(void)
52 {
53 int i,j,k;
54 scanf("%d",&k);
55 int s;
56 int n,m;
57 for(s=1; s<=k; s++)
58 { maxx=0;
59 scanf("%d",&n);
60 int vv=0;
61 for(i=0; i<n; i++)
62 {
63 scanf("%d %d",&ans[i].x,&ans[i].y);
64 ak[vv++]=ans[i].x;
65 ak[vv++]=ans[i].y;
66 }
67 sort(ak,ak+vv);
68 for(i=0; i<n; i++)
69 {
70 int l=0;
71 int r=vv-1;
72 int id=0;
73 while(l<=r)
74 {
75 int mid=(l+r)/2;
76 if(ak[mid]<=ans[i].x)
77 {
78 id=mid;
79 l=mid+1;
80 }
81 else r=mid-1;
82 }
83 ans[i].x=id;
84 l=0;
85 r=vv-1;
86 while(l<=r)
87 {
88 int mid=(l+r)/2;
89 if(ak[mid]<=ans[i].y)
90 {
91 id=mid;
92 l=mid+1;
93 }
94 else r=mid-1;
95 }
96 ans[i].y=id;
97 }
98 memset(tree,0,sizeof(tree));
99 for(i=0; i<n; i++)
100 {
101 in(0,200000,ans[i].x,ans[i].y,0);
102
103 }
104 fang(0,200000,0);
105 printf("Case %d: %d\n",s,maxx);
106 }
107 return 0;
108 }
1301 - Monitoring Processes的更多相关文章
- Monitoring Processes with Supervisord
If you're interested in more of this type of content, check out the Servers for Hackers eBook! As so ...
- 通过inotify监控linux文件系统变化
http://www.mjmwired.net/kernel/Documentation/filesystems/inotify.txt http://www.ibm.com/developerwor ...
- The Best KPIs to Use in Your Company
Here is a list of key performance indicators (KPIs) that should be used in contact centres, alongsid ...
- Apache CloudStack Features
As a mature and turnkey Infrastructure-as-a-Service (IaaS) platform, Apache CloudStack has a compreh ...
- Zabbix二次开发_03api列表
基于zabbix 3.0 https://www.zabbix.com/documentation/3.0/manual/api/reference Method reference This sec ...
- mysql的AB及读写和集群
Mysql的AB及读写 第1章 Mysql的AB配置 1.1 master配置 1.2 slave配置 第2章 读写分离 2.1 安装mycat 2.2 启动mycat 2.3 登录mycat相关问 ...
- 基于MySQL+MHA+Haproxy部署高可用负载均衡集群
一.MHA 概述 MHA(Master High Availability)是可以在MySQL上使用的一套高可用方案.所编写的语言为Perl 从名字上我们可以看到.MHA的目的就是为了维护Master ...
- Arch系统软件列表
1. 安装统计 2. 安装列表 3. 安装说明 4. 作为依赖项的安装列表 5. 更正 mangaro使用减的方式安装系统.开箱即用的豪华版本,大部分人需要的都有了,同样包括个别用户不需要的,配置方面 ...
- 【线上测试之后的应用】基于MySQL+MHA+Haproxy构建高可用负载均衡数据库集群(详解)
这里我们先介绍一下MHA是什么,其次就是它的应用与测试,同时为了大家呈现了数据备份案例,最后总结了使用情况以及注意事项和解决办法 一.MHA 概述 MHA(Master High Availabili ...
随机推荐
- CPU大小端模式及转换
通信协议中的数据传输.数组的存储方式.数据的强制转换等这些都会牵涉到大小端问题. CPU的大端和小端模式很多地方都会用到,但还是有许多朋友不知道,今天暂且普及一下. 一.为什么会有大小端模式之分呢? ...
- xmake v2.6.1 发布,使用 Lua5.4 运行时,Rust 和 C++ 混合编译支持
xmake 是一个基于 Lua 的轻量级跨平台构建工具,使用 xmake.lua 维护项目构建,相比 makefile/CMakeLists.txt,配置语法更加简洁直观,对新手非常友好,短时间内就能 ...
- E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing
解决办法:apt-get update或者apt-get cleanapt-get update 或者 apt-get update --fix-missing问题解析1 source本身的问题 根据 ...
- 大数据学习day39----数据仓库02------1. log4j 2. 父子maven工程(子spring项目的创建)3.项目开发(埋点日志预处理-json数据解析、清洗过滤、数据集成实现、uid回补)
1. log4j(具体见log4j文档) log4j是一个java系统中用于输出日志信息的工具.log4j可以将日志定义成多种级别:ERROR / WARN / INFO / DEBUG ...
- nodejs-CommonJS规范
JavaScript 标准参考教程(alpha) 草稿二:Node.js CommonJS规范 GitHub TOP CommonJS规范 来自<JavaScript 标准参考教程(alpha) ...
- JAVA序列化浅析
java.io.Serializable浅析 Java API中java.io.Serializable接口源码: 1 public interface Serializable { 2 } 类通过实 ...
- 删除button中除label之外的View
因为button中的UIButtonLabel判断class类型时,会被认为是view,所以想删除view类型的子控件时,会将label也删掉,从而无法显示title,此时,可以给指定的View添加t ...
- Mysql的表级锁
我们首先需要知道的一个大前提是:mysql的锁是由具体的存储引擎实现的.所以像Mysql的默认引擎MyISAM和第三方插件引擎 InnoDB的锁实现机制是有区别的.可根据不同的场景选用不同的锁定机制. ...
- OceanBase 2.x体验:推荐用DBeaver工具连接数据库
Original MQ4096 [OceanBase技术闲谈](javascript:void(0) 2020-01-15 OceanBase 2.x体验:推荐用DBeaver工具连接数据库 Ocea ...
- Java Bean 与Spring Bean 的区别
什么是JavaBean: JavaBean是一种JAVA语言写的可重用组件.JavaBean符合一定规范写的Java类,是一种规范.它的方法命名,构造以及行为必须符合特定的要求: 1.所有属性 ...