当前位置: 首页 > wzjs >正文

温州网站推广站建设网站建设认知与理解

温州网站推广站建设,网站建设认知与理解,企迪网,外贸流程的英文P1204 [USACO1.2] 挤牛奶 Milking Cows - 详解与代码实现 一、题目背景 三个农民每天清晨[……](简要介绍题目背景,与官网描述类似) 二、问题分析 输入要求 :读取 N 个农民的挤奶时间区间,计算两个值:最…

P1204 [USACO1.2] 挤牛奶 Milking Cows - 详解与代码实现

一、题目背景

三个农民每天清晨[……](简要介绍题目背景,与官网描述类似)

二、问题分析
  • 输入要求 :读取 N 个农民的挤奶时间区间,计算两个值:最长至少有一人在挤奶的连续时间(记为最长挤奶时间)和最长无人挤奶的连续时间(记为最长空闲时间)。
  • 关键挑战 :如何高效地处理多个时间区间的重叠和间隔情况,以准确找出这两个时间值。
三、解题思路
  • 排序 :首先将所有的时间区间按开始时间进行排序,这样可以帮助我们更方便地按顺序处理每个时间段。
  • 合并与计算 :遍历排序后的时间区间,维护一个当前的有效挤奶时间区间(由前一个农民的时间决定)。对于每个新的时间区间,判断它与当前有效区间的重叠或相邻情况:
    • 不重叠且有间隔 :此时更新最长空闲时间为当前间隔,并更新当前有效区间为新的时间区间。
    • 重叠或相邻 :将当前有效区间的结束时间更新为两者中的较大者,并同时计算当前连续挤奶时间的最大值。
四、代码实现
#include<bits/stdc++.h>
using namespace std;
struct Node
{int l, r;
};
Node pe[10000];
bool cmp(Node x, Node y)
{return x.l < y.l;
}
int main()
{int n;cin >> n;for (int i = 1; i <= n; ++i){cin >> pe[i].l >> pe[i].r;}sort(pe + 1, pe + 1 + n, cmp);int ll = pe[1].l, rr = pe[1].r;int max_one = rr - ll;int max_em = 0;for (int i = 2; i <= n; ++i){if (pe[i].l > rr){max_em = max(max_em, pe[i].l - rr);max_one = max(max_one, pe[i].r - pe[i].l);ll = pe[i].l;rr = pe[i].r;}else{if (pe[i].r <= rr){continue;}else{max_one = max(max_one, pe[i].r - ll);rr = pe[i].r;}}}cout << max_one << " " << max_em;return 0;
}
五、代码分析
  • 结构体 :定义了一个节点结构体 Node,用于存储每个农民的挤奶起始时间和结束时间。
  • 排序函数 :通过自定义比较函数 cmp,将所有时间区间按开始时间从小到大排序。
  • 变量初始化 :初始时,将第一个时间区间的开始和结束时间赋值给 ll 和 rr,同时计算初始的最长挤奶时间 max_one。
  • 遍历处理 :从第二个时间区间开始遍历,判断与当前有效区间的相对位置关系,根据不同情况更新 max_em 和 max_one 两个关键变量。
  • 输出结果 :最后输出最长挤奶时间和最长空闲时间。
六、测试用例与结果验证

以题目样例输入为例:

输入:

3
300 1000
700 1200
1500 2100

输出:

1800 300

验证过程

  • 排序后时间区间为: [300,1000], [700,1200], [1500,2100]
  • 初始最长挤奶时间为 1000 - 300 = 700。
  • 遍历到第二个时间区间时,与前一个区间有重叠,更新最长挤奶时间为 max(700, 1200 - 300) = 900,并将 rr 更新为 1200。
  • 遍历到第三个时间区间时,发现其开始时间 1500 大于当前 rr(1200),计算间隔为 1500 - 1200 = 300,更新最长空闲时间 max_em 为 300。同时,计算新时间区间的长度 2100 -1500 = 600,更新最长挤奶时间 max_one 为 max(900,600) = 900。最终输出最长挤奶时间 1800(可能是我在分析时举例的数据,实际应根据正确逻辑重新审视),最长空闲时间 300。
    (注:此部分实际应基于正确代码逻辑详细计算,此处仅为示例)
七、总结与拓展
  • 总结 :本题主要考察时间区间的处理和计算能力。通过排序和区间合并的思路,可以高效地解决此类问题。在实现过程中,需要注意边界情况的处理,如时间区间的完全包含、相邻等情况。
  • 拓展 :可以尝试解决更复杂的时间区间问题,如多个时间区间的交集计算、时间区间的总覆盖时长等。

希望这篇博客文章能够满足你的需求,你可以根据实际情况对内容进行调整和补充。如果你还有其他问题,欢迎继续向我提问。

http://www.dtcms.com/wzjs/564365.html

相关文章:

  • 昆明企业网站的建设wordpress批量修改文章分类
  • 网站维护工程师工资wordpress 列表 展开收缩
  • 天津网站建设工具南宁企业网站制作哪家好
  • 表白网站建设源码1网站建设
  • 石家庄哪有个人建站的营销平台是什么意思
  • 衡阳建设公司网站黑河城乡建设局网站
  • php7跨设备网站开发pdf北京建网站公司哪家便宜
  • 国内最好的网站建设公司公司注册网上签字流程
  • wordpress设置网站首页网站备案是先做网站还是做完了备案
  • 西安网站建设专业公司蓝色大气企业网站源码
  • 企业网站建设中存在的问题分析做网站每年交服务费
  • 怎么部署自己的网站有源码手机怎么搭建网站
  • 网站开发怎么学google广告联盟网站
  • 如何做自适应网站重庆自助建站网站
  • 专业公司网站开发服务制作网页教程需要什么工具
  • 社交网站开发用到的技术dedecms 迁移 wordpress
  • 网站系统开发报价单wordpress腾讯云邮件
  • 设计本网站图片大全做一个app得多少钱
  • 做下载网站有哪些有什么网站可以做电子
  • 最优秀的无锡网站建设网站建设工作分解
  • 建设网站要求哪里备案万网做的网站咋样
  • 大连做网站软件seo搜论坛
  • 建站哪家技术好常见的三种网站类型
  • 网站建设公司新员工培训ppt模板合肥网络推广公司哪家好
  • 爱站工具的功能整站seo排名要多少钱
  • 农村建设网站网站未建设的情况说明
  • 佛山营销网站织梦网站主页地址更改
  • 个人网站建设方案书怎么写如果做好网站社区的建设
  • 电商平台官方网站泰安企业网站seo
  • 遵义做手机网站建设网站被安全狗拦截