您的位置:首页 > 其它

nyoj——1036 非洲小孩(区间选点)

2015-07-23 08:14 525 查看


非洲小孩

时间限制:1000 ms | 内存限制:65535 KB
难度:2

描述家住非洲的小孩,都很黑。为什么呢?

第一,他们地处热带,太阳辐射严重。

第二,他们不经常洗澡。(常年缺水,怎么洗澡。)

现在,在一个非洲部落里,他们只有一个地方洗澡,并且,洗澡时间很短,瞬间有木有!!(这也是没有的办法,缺水啊!!)

每个小孩有一个时间段能够洗澡。并且,他们是可以一起洗的(不管你是男孩是女孩)。

那么,什么时间洗澡,谁应该来洗,由谁决定的呢?那必然是他们伟大的“澡”神啊。“澡”神有一个时间表,记录着该部落的小孩,什么时候段可以洗澡。现在,“澡”神要问你,一天内,他需要最少开启和关闭多少次洗澡的水龙头呢?因为,开启和关闭一次水龙头是非常的费力气的,即便,这也是瞬间完成的。

输入多组数据

第一行一个0<n<=100。

接下来n行,每行一个时间段。H1H1:M1M1-H2H2:M2M2,24小时制。

保证该时间段是在一天之内的。但是,不保证,H1H1:M1M1先于H2H2:M2M2。
输出题目描述,“澡”神最少需要开启和关闭多少次水龙头呢?
样例输入
1
00:12-12:12
2
00:12-12:12
14:00-12:00


样例输出
1
1


纠结了好久,例如这种输入情况

3

00:12-12:12

8:00-12:00

12:11-20:00

不应该输出为1嘛,只是最小可能,不过答案好像要是2才对,搞不了了

#include<iostream>

#include<stdio.h>

#include<string.h>

#include<math.h>

#include<ctype.h>

#include<stdlib.h>

#include<string>

#include<algorithm>

#include<vector>

#include<set>

#include<map>

#include<list>

#include<queue>

#include<stack>

#include<iomanip>

#include<numeric>

#include <istream>     //基本输入流

#include <ostream>     //基本输出流

#include <sstream>     //基于字符串的流

#include <utility>     //STL 通用模板类

#include <complex.h>   //复数处理

#include <fenv.h>    //浮点环境

#include <inttypes.h>  //整数格式转换

#include <stdbool.h>   //布尔环境

#include <stdint.h>   //整型环境

#include <tgmath.h>   //通用类型数学宏

#define L(a,b,c) for(int a = b;a >= c;a --)

#define M(a,b,c) for(int a = b;a < c;a ++)

#define N(a,b) memset(a,b,sizeof(a));

const int MAX=100000000;

const int MIN=-MAX;

typedef int T;

typedef double D;

typedef char C;

using namespace std;

struct data

{

int x;

int y;

}s[10010];

bool comp(data x,data y)

{

if(x.x==y.x)

return x.y<y.y;

else

return x.x<y.x;

}

int main()

{

int a,b,c,d;

char e,f,g;

int t;

while(~scanf("%d",&t))

{

M(i,0,t)

{

scanf("%d%c%d%c%d%c%d",&a,&e,&b,&f,&c,&g,&d);

s[i].x=a*60+b;

s[i].y=c*60+d;

if(s[i].x>s[i].y)

swap(s[i].x,s[i].y);

}

sort(s,s+t,comp);

int sum=1;

int begin=s[0].y;

M(i,1,t)

{

if(begin<s[i].x)

{

sum++;

begin=s[i].y;

}

else

begin=min(begin,s[i].y);

}

cout<<sum<<endl;

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: