(贪心) nyoj1036-非洲小孩
题目描述:
第一,他们地处热带,太阳辐射严重。
第二,他们不经常洗澡。(常年缺水,怎么洗澡。)
现在,在一个非洲部落里,他们只有一个地方洗澡,并且,洗澡时间很短,瞬间有木有!!(这也是没有的办法,缺水啊!!)
每个小孩有一个时间段能够洗澡。并且,他们是可以一起洗的(不管你是男孩是女孩)。
那么,什么时间洗澡,谁应该来洗,由谁决定的呢?那必然是他们伟大的“澡”神啊。“澡”神有一个时间表,记录着该部落的小孩,什么时候段可以洗澡。现在,“澡”神要问你,一天内,他需要最少开启和关闭多少次洗澡的水龙头呢?因为,开启和关闭一次水龙头是非常的费力气的,即便,这也是瞬间完成的。
输入描述:
多组数据
第一行一个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-非洲小孩的更多相关文章
- NYOJ-1036 非洲小孩(贪心)
非洲小孩 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...
- NYOJ-1036 非洲小孩
非洲小孩 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 家住非洲的小孩,都非常黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不常常洗澡.(常年缺水, ...
- nyoj 1036 非洲小孩【贪心区间选点】
非洲小孩 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...
- nyoj 非洲小孩
非洲小孩 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...
- 问题 N: 非洲小孩
题目描述 家住非洲的小孩,都很黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不经常洗澡.(常年缺水,怎么洗澡.) 现在,在一个非洲部落里,他们只有一个地方洗澡,并且,洗澡时间很短,瞬间 ...
- 非洲儿童(南阳oj1036)(馋)
非洲小孩 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描写叙述 家住非洲的小孩,都非常黑.为什么呢? 第一.他们地处热带,太阳辐射严重. 第二,他们不常常洗澡.(常年缺水, ...
- nyoj--1036--非洲小孩(区间相交问题)
非洲小孩 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 家住非洲的小孩,都很黑.为什么呢? 第一,他们地处热带,太阳辐射严重. 第二,他们不经常洗澡.(常年缺水,怎么洗 ...
- [NOI2003]逃学的小孩 (贪心+树的直径+暴力枚举)
Input 第一行是两个整数N(3 <= N <= 200000)和M,分别表示居住点总数和街道总数.以下M行,每行给出一条街道的信息.第i+1行包含整数Ui.Vi.Ti(1<=Ui ...
- candy(贪心)
[题目] There are N children standing in a line. Each child is assigned a rating value. You are giving ...
随机推荐
- Microsoft Bot Framework with LUIS
今年微软的编程之美的主题是“对话即平台”,“人工智能”,要求参赛选手用到Bot Framework与Cognitive Services. 大多数人应该对这两个技术都不怎么熟悉吧,我就在这里写写自己所 ...
- 免费开源的会计软件 GnuCash 3.4 发布
导读 GnuCash 3.4已经发布,GnuCash是免费和开源的会计软件.GnuCash开发团队宣布推出GnuCash 3.4,这是3.x稳定版系列的第五版. 变化 在3.3和3.4之间,完成了以下 ...
- BZOJ2040[2009国家集训队]拯救Protoss的故乡——模拟费用流+线段树+树链剖分
题目描述 在星历2012年,星灵英雄Zeratul预测到他所在的Aiur行星在M天后会发生持续性暴雨灾害,尤其是他们的首都.而Zeratul作为星灵族的英雄,当然是要尽自己最大的努力帮助星灵族渡过这场 ...
- Codeforces1023E Down or Right 【贪心】
题目分析: 从起点开始询问终点连通性,优先右走.从终点开始询问起点连通性,优先上走. 代码: #include<bits/stdc++.h> using namespace std; in ...
- python中的split()方法的使用
Python split()方法:通过指定分隔符对字符串进行分割并返回一个列表,默认分隔符为所有空字符,包括空格.换行(\n).制表符(\t)等. l Str.split()默认以空格,换行\n,制 ...
- c# double decimal
两种类型 double范围比decimal大,精度比之低 类型 大致范围 精度 .NET Framework 类型 double ±5.0 × 10−324 到 ±1.7 × 10308 15 到 1 ...
- SNMP扫描
------------------------------------------------------------------grub引导密码:[root@localhost ~]# jm4pt ...
- LVS-Keepalived高可用集群(DR)
LVS-DR+Keepalived高可用集群 -------client------------------主LVS--------------------从LVS------------------ ...
- luogu5012 水の数列 (并查集+线段树)
如果我们能求出来每个区间个数的最大分值,那就可以用线段树维护这个东西 然后出答案了 然后这个的求法和(luogu4269)Snow Boots G非常类似,就是我们把数大小排个序,每次都拿<=x ...
- pandas to_sql
实例: import pymysql import pandas as pd import numpy as np from sqlalchemy import create_engine df = ...