(贪心) 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 ...
随机推荐
- 1.rabbitmq高可用方案
采用标准集群模式 HAPROXY + rabbitmq 2个 ram 和 一个 disk 节点 主机规划: 192.168.157.128 haproxy keepalive 主 ram节点 1 ...
- 11.ingress服务
kubernetes 的service服务我们提到过.service 可以用nodePort的方式和调用公有云LBAAS服务 来对于集群外的client提供服务访问,但是service是工作的osi ...
- [离散时间信号处理学习笔记] 7. z变换
z变换及其收敛域 回顾前面的文章,序列$x[n]$的傅里叶变换(实际上是DTFT,由于本书把它叫做序列的傅里叶变换,因此这里以及后面的文章也统一称DTFT为傅里叶变换)被定义为 $X(e^{j\ome ...
- h.264并行熵解码
在前面讨论并行解码的章节中,我们专注于讨论解码的宏块重建部分,甚至把宏块重建描述成宏块解码,这是因为在解码工作中,宏块重建确实占了相当大的比重,不过解码还包含其它的部分,按照解码流程可粗略分为: 读取 ...
- 提高网络灵活性和效率的组网方式—SD-WAN
导读 最初,大多数企业只是简单地将软件覆盖添加到广域网连接上.但是,随着时间的推移,由于SD-WAN架构的易配置功能,企业将开始采用SD-WAN更复杂的功能. 广域网一般用于连接多个业务地点,如总部和 ...
- 资源推荐:特意挑选了11个可以称得上“神器”的Windows工具下载
特意挑选了11个可以称得上“神器”的Windows工具,安装包获取方式在文末. 以下神器包含:OCR文字识别.百度云超速下载工具.本地文件搜索工具.软件卸载器.本地视频播放器.图片去水印神器.百度文库 ...
- Maven添加Web.xml的方法
当创建maven工厂时没有web.xml文件1.点击你的项目名称,进入到Myeclipse的-- Project Facets上,2.点击Dynamic Web Module 和下面的Java,将两个 ...
- PHP获取网络图片并保存在本地目录
PHP获取网络图片并保存在本地目录思路: 代码如下: function file_exists_S3($url) { $state = @file_get_contents($url,0,null,0 ...
- 【支付宝】"验签出错,sign值与sign_type参数指定的签名类型不一致:sign_type参数值为RSA,您实际用的签名类型可能是RSA2"
问题定位:从描述就可以看的出来了,你现在sign_type是 RSA类型的,要改成跟你现在用的签名类型一致的类型,也就是 要改为 RSA2 PHP为例 // 新版只支持此种签名方式 商户生成签名字符 ...
- Django进阶-auth集成认证模块
auth认证模块是Django内置集成的一个用户认证模块. auth认证模块方法 方法 释义 auth.authenticate() 认证校验 auth.login(request,user) 封装认 ...