题目描述:

家住非洲的小孩,都很黑。为什么呢?
第一,他们地处热带,太阳辐射严重。
第二,他们不经常洗澡。(常年缺水,怎么洗澡。)
现在,在一个非洲部落里,他们只有一个地方洗澡,并且,洗澡时间很短,瞬间有木有!!(这也是没有的办法,缺水啊!!)
每个小孩有一个时间段能够洗澡。并且,他们是可以一起洗的(不管你是男孩是女孩)。
那么,什么时间洗澡,谁应该来洗,由谁决定的呢?那必然是他们伟大的“澡”神啊。“澡”神有一个时间表,记录着该部落的小孩,什么时候段可以洗澡。现在,“澡”神要问你,一天内,他需要最少开启和关闭多少次洗澡的水龙头呢?因为,开启和关闭一次水龙头是非常的费力气的,即便,这也是瞬间完成的。

输入描述:

多组数据
第一行一个0<n<=100。
接下来n行,每行一个时间段。H1H1:M1M1-H2H2:M2M2,24小时制。
保证该时间段是在一天之内的。但是,不保证,H1H1:M1M1先于H2H2:M2M2。

输出描述:

题目描述,“澡”神最少需要开启和关闭多少次水龙头呢?

样例输入:

复制

1
00:12-12:12
3
00:12-13:14
13:13-18:00
17:00-19:14

样例输出:

1
2

提示:

----------------------------------------------------------------------------------------------------------------------------------------

贪心,类似区间不相交问题吧。就是关于题中的“不保证,H1H1:M1M1先于H2H2:M2M2。”指的是时间的开始和结束时间反了。。。。并不是23:00-1:00。。。

还有,关于输入时间,我的思路是用字符串,然后对字符串一次遍历,分别取相应的时,分,然后进行转换,得到一个分钟的数。不过很麻烦。。。。

我看了其他人的博客,才知道有scanf("%d:%d-%d:%d", &a, &b, &c, & d);这个用法。。。。。

C++代码:

#include<iostream>
#include<algorithm>
#include<cmath>
#include<string.h>
#include<string>
using namespace std;
const int maxn = ;
struct segment {
int start;
int end;
}s[maxn];
bool cmp(segment a, segment b) {
if (a.end == b.end) {
return a.start < b.start;
}
return a.end < b.end;
}
int main() {
int n;
while (cin >> n) {
string str;
for(int j = ; j < n; j++) {
cin >> str;
int hour1 = ;
int hour2 = ;
int minute1 = ;
int minute2 = ;
string hour_str1, hour_str2, minute_str1, minute_str2;
hour_str1 = hour_str2 = minute_str1 = minute_str2 = "";
for (int i = ; i < ; i++) {
hour_str1 += str[i];
}
hour1 = stoi(hour_str1);
for (int i = ; i < ; i++) {
minute_str1 += str[i];
}
minute1 = stoi(minute_str1);
for (int i = ; i < ; i++) {
hour_str2 += str[i];
}
hour2 = stoi(hour_str2);
for (int i = ; i < ; i++) {
minute_str2 += str[i];
}
minute2 = stoi(minute_str2);
s[j].start = hour1 * + minute1;
s[j].end = hour2 * + minute2;
if (s[j].start > s[j].end) {
//s[j].start = (hour1 - 24) * 60 + minute1;
swap(s[j].start, s[j].end);
}
}
sort(s, s + n, cmp);
int sum = ;
int ans = s[].end;
for (int i = ; i < n; i++) {
if (ans < s[i].start) {
sum++;
ans = s[i].end;
}
}
cout << sum << endl;
}
//system("pause");
return ;
}

其他大佬的代码:

链接:https://blog.csdn.net/a2459956664/article/details/51555148

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
const int maxn = + ; struct P
{
int s, e;
}p[maxn];
int n;
int a, b, c, d; int cmp(P x, P y)
{
if (x.e != y.e)
return x.e < y.e;
else
return x.s < y.s;
} int main()
{
while (scanf("%d", &n) != EOF){
for (int i = ; i < n; i++){
scanf("%d:%d-%d:%d", &a, &b, &c, & d);
p[i].s = a * + b;
p[i].e = c * + d;
if (p[i].s > p[i].e)
swap(p[i].s, p[i].e);
}
sort(p, p + n, cmp);
int ans = ;
int temp = p[].e;
for(int i = ; i < n; i++){
if (p[i].s > temp){
ans++;
temp = p[i].e;
}
}
printf("%d\n", ans);
}
return ;
}

(贪心) nyoj1036-非洲小孩的更多相关文章

  1. NYOJ-1036 非洲小孩(贪心)

    非洲小孩 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...

  2. NYOJ-1036 非洲小孩

    非洲小孩 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 家住非洲的小孩,都非常黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不常常洗澡.(常年缺水, ...

  3. nyoj 1036 非洲小孩【贪心区间选点】

    非洲小孩 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...

  4. nyoj 非洲小孩

    非洲小孩 时间限制:1000 ms  |  内存限制:65535 KB 难度:2   描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...

  5. 问题 N: 非洲小孩

    题目描述 家住非洲的小孩,都很黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不经常洗澡.(常年缺水,怎么洗澡.) 现在,在一个非洲部落里,他们只有一个地方洗澡,并且,洗澡时间很短,瞬间 ...

  6. 非洲儿童(南阳oj1036)(馋)

    非洲小孩 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描写叙述 家住非洲的小孩,都非常黑.为什么呢? 第一.他们地处热带,太阳辐射严重. 第二,他们不常常洗澡.(常年缺水, ...

  7. nyoj--1036--非洲小孩(区间相交问题)

    非洲小孩 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 家住非洲的小孩,都很黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不经常洗澡.(常年缺水,怎么洗 ...

  8. [NOI2003]逃学的小孩 (贪心+树的直径+暴力枚举)

    Input 第一行是两个整数N(3 <= N <= 200000)和M,分别表示居住点总数和街道总数.以下M行,每行给出一条街道的信息.第i+1行包含整数Ui.Vi.Ti(1<=Ui ...

  9. candy(贪心)

    [题目] There are N children standing in a line. Each child is assigned a rating value. You are giving ...

随机推荐

  1. LoadRunner Vuser测试脚本添加前置条件举例

    调用接口前需要先获取登陆token,放入消息头中. /* * LoadRunner Java script. (Build: 3020) * * Script Description: 接口性能测试脚 ...

  2. 一、.NET Core MVC 项目结构模板

    一.图文描述,开口干 二.文件结构:  wwwroot 首先,Razor Pages项目中多了一个wwwroot的文件夹,这个文件夹中,主要存放网站的静态资源,如css,网站图片资源文件,js文件,三 ...

  3. b2b

    sku(Stock Keeping Unit)(件)最小库存量单位. spu(一款) 一种详细的规格参数有时候跟spu,规格参数加上颜色+尺寸什么的唯一确定了一个手机,对应的就是sku spu:一款产 ...

  4. windows下ping端口

    上图的操作完成以后  进入dos控制台 输入telnet  ip地址  端口号   回车 标识已ping通 ping不通是这种提示

  5. hdu 4578 Transformation 线段树多种操作裸题

    自己写了一个带结构体的WA了7.8次 但是测了几组小数据都对..感觉问题应该出在模运算那里.写完这波题解去对拍一下. 以后线段树绝不写struct!一般的struct都带上l,r 但是一条线段的长度确 ...

  6. 51nod 1503 猪和回文(dp滚存)

    题面 大意:在一个n*m的矩形中从(1,1)走到(n,m)而且走过的路径是一条回文串,统计方案数 sol:我们考虑从(1,1)和(n,m)两端开始算,这样就只要保证每次经过的字符一样就可以满足回文了, ...

  7. linq之group by 的使用

    group by var list = from s in _sysBll.GetList(s => s.ParamID == "TraSchType" && ...

  8. POJ1860-Currency Exchange-判正环

    两种货币的交换可以当成两条边,建图后跑Bellman_ford算法就好了. Bellman_ford算法可以用来处理负边权,所以可以判断是否存在负环.反过来就可以判断是否存在正环. /*------- ...

  9. 洛谷P1144最短路计数题解

    最短路计数 此题还是寻找从1到i点总共有几个最短路且每条边的边长为1,对于这种寻找最短路的个数,我们可以反向搜索,即先用\(SPFA\)预处理出所有点的最短路,然后我们反向记忆化搜索,可以用\(sum ...

  10. 【ARC072E】Alice in linear land DP

    题目大意 有一个人要去直线上\(lm\)远处的地方,他会依次给他的机器发出\(n\)个指令.第\(i\)个指令为\(d_i\).他的机器收到一个指令\(x\)后,如果向目的地方向前进\(xm\)后比当 ...