HDU 3650 差分

题意:

可以瞬移的Sunny却不能同时看两个场馆的表演,现给出n个场馆表演开始和结束时间,问多少天能全部看完。

 

题解:
求最大限度按覆盖次数。利用差分数组做。

 

View Code
 1 #include <iostream>

 2 #include <cstdio>

 3 #include <cstring>

 4 #include <cstdlib>

 5 #include <algorithm>

 6 

 7 #define N 86444

 8 

 9 using namespace std;

10 

11 int s[N],e[N],n;

12 

13 inline void read()

14 {

15     memset(s,0,sizeof s);

16     memset(e,0,sizeof e);

17     for(int i=1,a,b;i<=n;i++)

18     {

19         scanf("%d%d",&a,&b);

20         if(a>b) swap(a,b); 

21         s[a]++; e[b]++;

22     }

23 }

24 

25 inline void go()

26 {

27     int ans=0,res=0;

28     for(int i=0;i<=86400;i++)

29     {

30         res+=s[i];

31         ans=max(ans,res);

32         res-=e[i];

33     }

34     printf("%d\n",ans);

35 }

36 

37 int main()

38 {

39     while(scanf("%d",&n),n) read(),go();

40     return 0;

41 }

 

 

你可能感兴趣的:(HDU)