首页 > 代码库 > Kattis downtime

Kattis downtime

链接:https://open.kattis.com/problems/downtime

题意:n个要解决的进程,每个服务器可以解决k个进程,每个进程花费1000MS,给出n个进程的开始时间,问最少要几个服务器

思路:我们可以求出每个进程的区间,然后看我们可以不重叠的解决多少个进程

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 
 4 struct node{
 5     int x;
 6     int y;
 7 }a[200005];
 8 bool cmp(node p,node q){
 9     if(p.x==q.x) return p.y<q.y;
10     return p.x<q.x;
11 }
12 int main(){
13     int n,k;
14     scanf("%d%d",&n,&k);
15     int x,l=0;
16     for(int i=1;i<=n;i++){
17         scanf("%d",&x);
18         a[++l].x=x; a[l].y=1;
19         a[++l].x=x+1000;a[l].y=-1;
20     }
21     sort(a+1,a+1+l,cmp);
22     int Max=0,sum=0;;
23     for(int i=1;i<=l;i++){
24       // cout<<a[i].x<<" "<<a[i].y<<endl
25         if(a[i].y==-1) {
26             sum--;
27         }
28         else sum++;
29         Max=max(Max,sum);
30     }
31     if(Max%k!=0) Max=Max/k+1;
32     else Max=Max/k;
33     cout<<Max<<endl;
34     return 0;
35 }

 

Kattis downtime