nyoj1036非洲小孩(贪心)

2024-02-16 11:32
文章标签 贪心 非洲 小孩 nyoj1036

本文主要是介绍nyoj1036非洲小孩(贪心),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

非洲小孩

时间限制: 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
提示

Ps:开启和关闭为一次


#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
struct ti
{int start;int end;
}f[105];
int cmp(ti s1,ti s2)
{return s1.end<s2.end;
}
int main()
{int i,n,a,b,c,d,m;ti temp;int t,time1,time2;int num,flag;while(scanf("%d",&n)!=EOF&&n){for(i=0;i<n;++i){time1=0;time2=0;scanf("%d:%d-%d:%d",&a,&b,&c,&d);time1=a*60+b;time2=c*60+d;if(time1>time2){m=time1;time1=time2;time2=m;}f[i].start=time1;f[i].end=time2;}sort(f,f+n,cmp);num=1;flag=f[0].end;for(i=1;i<n;++i){if(flag<f[i].start)++num;flag=f[i].end;}printf("%d\n",num);}return 0;
}

把开始和结束的时间都化成分钟,将其中较小的放在前面

这篇关于nyoj1036非洲小孩(贪心)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/714400

相关文章

贪心推公式——AcWing 125. 耍杂技的牛

贪心推公式 定义 贪心算法是一种在每一步选择中都采取在当前状态下最优的选择,希望通过局部的最优选择来得到全局最优解的算法策略。 运用情况 问题具有最优子结构,即一个问题的最优解包含其子问题的最优解。可以通过局部最优决策逐步推导到全局最优。问题的选择策略相对明确且易于计算。 注意事项 贪心算法并不总是能得到全局最优解,可能会陷入局部最优。对于一些复杂问题,需要谨慎验证其正确性。可能需要对

代码随想录第31天|贪心算法

134. 加油站 参考 思路: 以每个油站相差作为判断, 比如: gas [5 8 2 8]cost [6 5 6 6] [-1 3 -4 2] 错误 : 把相差最大点当作起点判断能否绕一圈 : 相加数组是否小于0局部最优: 当前累加rest[i]的和curSum一旦小于0,起始位置至少要是i+1,因为从i之前开始一定不行全局最优: 找到可以跑一圈的起始位置 class

贪心算法—

贪心算法是一种在每一步选择中都采取在当前状态下最好或最优(即最有利)的选择,从而希望导致结果是全局最好或最优的算法。这种算法并不总是能找到全局最优解,但在某些问题上能提供足够好的解决方案。贪心算法的关键特性包括: 局部最优选择:在每一步决策时,都选择当前看来最佳的解决方案,不考虑长远的影响。无后效性:过去做出的选择不会影响未来的选择,也就是说,当前的最优选择不会因为之前做了

算法之广度优先,深度优先,拓扑,贪心,并查集

文章目录 1 图算法1.1 广度优先搜索1.2 深度优先搜索1.3 拓扑排序1.4 贪心算法1.4.1 定义1.4.2 示例 1.5 并查集(不相交集合数据结构)1.5.1 并查集讲解1.5.2 Kruskal算法1.5.3 Prim算法 1.8 Bellman-Ford算法 1 图算法 地图数据常常可以用图(Graph)这类数据结构表示,那么在图结构中常用的搜索算法也可以应用

贪心+动归1

​​​​​​​​​​​​​​跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 class Solution {public boolean canJump(int[] nums) {// 跳跃覆盖范围究竟可不可以覆盖到终点!//

[POJ 3764] The xor-longest Path (Tire树 + 贪心)

POJ - 3674 题意是给你一个树,每条边有一个权值,求得树上一条路径,使路径上每条边权值的异或和最大 首先用一个 DFS把根到任意点的路径的异或和求出来 xorv[i] 由异或的性质可得点 u和点 v的异或和即为 xorv[u]^xorv[v] ( 根到两点 LCA的异或和会消去) 然后问题就转化成在区间内找两个值,使得他们的异或和最大 与 LightOJ - 1269一样的做法,

[POJ 3045] Cow Acrobats (贪心)

POJ - 3045 有若干头牛叠罗汉,每头牛有一个冒险值,为在其上面所有牛的重量,减去其力量值 问如何使得最大的冒险值最小 挑战上面的题,本来想着用二分答案的方法做 虽然觉得自己的思路没什么问题,但是 WA了 百度了一发题解,发现这题正解是贪心 首先直观感觉力量大的,体重轻的应该在下面,但这有两个因素,不好确定 可利用调整法试图找出答案 假设我已经找到了答案排列 ( 猜想答案序列

[POJ 1862] Stripies (贪心)

POJ - 1862 有若干个生物,有自己的质量,两个生物碰撞后, 生成一个新的生物质量为 2*sqrt(m_1*m_2) 贪心策略是尽可能地让大的生物先碰撞 这样较大的数可以被多次开方 由于 N比较小,生成的新生物冒泡排序一下就好了 #pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>

[POJ 3040] Allowance (贪心)

POJ - 3040 FJ手中有若干面值的货币,小面值的货币能被大面值的整除 每周他要给奶牛发不少于 C的工资,问最多能发几周 首先大于 C的面值都先发掉 然后优先发剩下的大面额的货币,当超过时 将最后一个大面额的用尽可能小的货币代替 #pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>

[POJ 3190] Stall Reservations (区间贪心)

POJ - 3190 给定若干个区间,问至少要分成几组 使得同组的区间互不重叠 典型的区间贪心问题 贪心的策略就是对左端点排序,然后依次选择安排 记录一下每个隔间最右端点的位置,然后用最小堆维护一下 当前区间尽可能地放到最右点最小的组里 如果这组依旧放不进去,就没有隔间能放得进去了 所以就要为其申请一个新的隔间 否则就把它安排到这个隔间里,并且更新此隔间最右端点 #p