USACO之Section1.2.1 Milking Cows [其他]
来源:互联网 发布:超级电容给单片机供电 编辑:程序博客网 时间:2024/06/05 20:31
【题意】三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒。第二个农民在700秒开始,在 1200秒结束。第三个农民在1500秒开始2100秒结束。期间最长的至少有一个农民在挤奶的连续时间为900秒(从300秒到1200秒),而最长的无人挤奶的连续时间(从挤奶开始一直到挤奶结束)为300秒(从1200秒到1500秒)。
你的任务是编一个程序,读入一个有N个农民(1 <= N <= 5000)挤N头牛的工作时间列表,计算以下两点(均以秒为单位):
最长至少有一人在挤奶的时间段。
最长的无人挤奶的时间段。(从有人挤奶开始算起)
【分析】这道题开始的思路是:将时间段排序,然后用一个布尔型的数组去标记,看布尔型数组为true的最长值,和为false的最长值,即为结果。
但是时间为小于1000000的数,而且农民的个数为(1<=N<=5000)。于是想用简单的方法。
我采用将时间段记为一组(可以组成结构体),对组进行排序,(先比较开始时间,当开始时间相等时,比较结束时间),在此期间对结果进行统计。这里我尝试不用结构体去存储起点和终点,我将用C++中的一种pair模板,用法可自行百度,这里我只讲解我用到的功能,以后还会对其进行总结。
定义pair类型时,可用typedef pair<int ,int>p;赋值时,可用形如pair<int ,int > p1= make_pair(5,6);输出属性值时,可用p.first, p.second
同时我才用了vector对pair进行存储,所以我采用自定义sort函数。
具体代码如下:
/* ID:m1519591 PROG: milk2 LANG:C++*/#include<iostream>#include<fstream>#include<vector>#include<algorithm>using namespace std;typedef pair<int ,int> t;vector<t>time;bool cmp(const pair<int,int> &a,const pair<int,int> &b){ if(a.first!=b.first) return a.first<b.first; else return a.second<b.second;}int main(){// // ofstream cout ("milk2.out");// ifstream cin ("milk2.in"); int ans1=0,ans2=0; int n,fro,end; cin>>n; for(int i=0;i<=n-1;i++) { cin>>fro>>end; time.push_back(make_pair(fro,end)); } sort(time.begin(),time.end(),cmp); for(int i=1;i<=n-1;i++) { fro=time[i-1].first; end=time[i-1].second; if(end>=time[i].first) { end=max(end,time[i].second); ans1=max(ans1,end-fro); } else{ fro=end; end=time[i].first; ans2=max(end-fro,ans2); } } cout<<ans1<<" "<<ans2<<endl; return 0; }
阅读全文
0 0
- USACO之Section1.2.1 Milking Cows [其他]
- USACO-Section1.2 Milking Cows [其他]
- USACO Section1.2 Milking Cows
- USACO-Section1.2 Milking Cows
- USACO-Section1.2 Milking Cows
- USACO-Section1.2 Milking Cows
- USACO-Section1.2 Milking Cows [线段树]
- USCAO-Section1.2 Milking Cows
- Milking Cows(USACO)
- USACO 1.2-Milking Cows
- usaco 1.2:Milking Cows
- [USACO] Milking Cows
- usaco Milking Cows
- USACO 1.2 Milking Cows
- [USACO]Milking Cows
- usaco Milking Cows 报告
- usaco:Milking Cows
- USACO-Milking Cows
- 2017.5.28 codeforce h题思考记录
- 使用光盘进行搭建本地yum 源
- 单例模式
- 读《怎样解题》
- DOM节点删除之empty()的基本用法
- USACO之Section1.2.1 Milking Cows [其他]
- sklearn preprocessing 数据预处理(OneHotEncoder)
- 读书笔记《Effective C++》条款38:通过复合塑模出has-a或“根据某物实现出”
- Linux设备驱动之USB网卡驱动程序
- Java集合小结
- 深克隆和浅克隆
- 深入理解javascript原型和闭包(13)-【作用域】和【上下文环境】
- Eclipse 建立 Java 最简 Web 项目
- 设计模式原则