(贪心) 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 ...
随机推荐
- 二、两条Linux删除数据跑路命令
一.rm rm -rf / 无提示循环删除根目录,,删除存在被恢复的可能 二.dd dd if=/dev/urandom of=/dev/hda1 随机填写数据到相应分区,直到填满为止.重写后的分区无 ...
- kebu之rook-ceph
准备工作 所有节点开启ip_forward cat <<EOF > /etc/sysctl.d/ceph.conf net.ipv4.ip_forward = 1 net.bridg ...
- Codeforces Round #429 Div. 1
A:甚至连题面都不用仔细看,看一下样例就知道是要把大的和小的配对了. #include<iostream> #include<cstdio> #include<cmath ...
- POJ 3349-Snowflake Snow Snowflakes-字符串哈希
哈希后,对每片雪花对比6次. #include <cstdio> #include <cstring> #include <vector> #include < ...
- ajax 提交数组 泛型集合(嵌套集合)
直接上代码 后台接口: A类型中嵌套了 List<B> B类型中嵌套了 List<C> [HttpPost] public string Post(A a) { return ...
- Code POJ - 1850 组合数学
题意 :字符串从a=1 b=2 c=3....z=26 ab=27开始编号 每个都是升序的 给出字符串问是几号 思路:主要是要看n位字符串有多少个 这里需要用组合数学的思想 组合数用杨辉三角形递推 ...
- 洛谷P1330封锁阳光大学题解
题意 此题可以说是一个很裸的一个二分图染色,但是比较不同的是,这个图中可能是不联通的,因此我们需要找到所有的联通块,然后一一选出每个联通块中黑块与白块中最小的个数,然后加入到最后的答案中去,也是很坑的 ...
- python主流测试框架的简介
1.python自动化的一些测试框架 1).unitest(也称为PyUnit) 地址:https://docs.python.org/2/library/unittest.html 2).Nose ...
- MT【249】离心率两题
椭圆$\dfrac{x^2}{a^2}+\dfrac{y^2}{b^2}=1,(a>b>0)$的一个焦点为$F$,过$F$的直线交椭圆于$A,B$两点,$M$是点$A$关于原点的对称点.若 ...
- UOJ #207. 共价大爷游长沙(LCT + 异或哈希)
题目 维护一颗动态树,并维护一个点对集合 \(S\) . 动态查询一条边,是否被集合中所有点对构成的路径包含. \(n \le 100000, m \le 300000\) 题解 orz 前辈 毛爷爷 ...