milk2解题报告 —— icedream61 博客园(转载请注明出处)
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】
  N个农民,每个农民从L[i]到R[i]时间给奶牛挤奶。问最长的一直有人挤奶的时间,和最长的没有人挤奶的时间。
【数据范围】
  1<=N<=5000
  0<=L[i],R[i]<=1,000,000
【输入样例】
  3
  300 1000
  700 1200
  1500 2100
【输出样例】
  900 300
------------------------------------------------------------------------------------------------------------------------------------------------
【分析】
  先对N个农民按照L[i]排序,然后顺序扫。
  我用Sum[0]记录最长一直没人挤奶的时间,用Sum[1]记录最长一直有人挤奶的时间。
  用Lt记录当前所考虑的开始时间,Rt记录当前所考虑的结束时间。
  “a←b”表示用b更新a,即 if(b>a) a=b;
  开始 Lt=L[1]; Rt=R[1];
  如果 R[i]<L[i+1],说明i和i+1时间分开了,那么 Sum[0]←L[i+1]-Rt; Sum[1]←Rt-Lt;
  否则,说明i+1可以和i的挤奶时间连上,那么 Rt←R[i+1];
  算法描述完毕,注意别写错就好。
------------------------------------------------------------------------------------------------------------------------------------------------
【总结】
  一遍AC。
  复习了下快排~
  还有由于直接上手写的代码,代码不漂亮:
    1.bool变量p没用上
    2.L和R如果定义成Time类型,和T[]保持一致就更好看了

------------------------------------------------------------------------------------------------------------------------------------------------

【代码】

 /*
ID: icedrea1
PROB: milk2
LANG: C++
*/ #include <iostream>
#include <fstream>
using namespace std; int N;
struct Time { int b,g; } T[+]; void qsort(Time T[],int l,int r)
{
if(l>=r) return; int i=l,j=r,x=T[(l+r)>>].b;
while(true)
{
while(T[i].b<x) ++i;
while(T[j].b>x) --j;
if(i>j) break;
Time t=T[i]; T[i]=T[j]; T[j]=t;
++i; --j;
}
qsort(T,l,j); qsort(T,i,r);
} void change(int &a,int b)
{
if(b>a) a=b;
} int main()
{
ifstream in("milk2.in");
ofstream out("milk2.out"); in>>N;
for(int i=;i<=N;++i) in>>T[i].b>>T[i].g; qsort(T,,N); bool p; // Ture挤奶,F空闲
int L,R; // 当前时间段
int Sum[]={,}; // 最大值——0空闲时间,1挤奶时间 L=T[].b; R=T[].g;
for(int i=;i<=N;++i)
{
if(R<T[i+].b) // 挤奶时间完结
{
change(Sum[],T[i+].b-R);
change(Sum[],R-L);
L=T[i+].b; R=T[i+].g;
}
else // 更新挤奶时间
{
change(R,T[i+].g);
}
}
change(Sum[],R-L); out<<Sum[]<<" "<<Sum[]<<endl; in.close();
out.close();
return ;
}

USACO Section1.2 Milking Cows 解题报告的更多相关文章

  1. USACO Section1.5 Prime Palindromes 解题报告

    pprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  2. USACO Section1.5 Superprime Rib 解题报告

    sprime解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  3. USACO Section1.5 Number Triangles 解题报告

    numtri解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  4. USACO Section1.4 Arithmetic Progressions 解题报告

    ariprog解题报告 —— icedream61 博客园(转载请注明出处)-------------------------------------------------------------- ...

  5. USACO Section1.3 Combination Lock 解题报告

    combo解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  6. USACO Section1.3 Prime Cryptarithm 解题报告

    crypt1解题报告 —— icedream61 博客园(转载请注明出处)--------------------------------------------------------------- ...

  7. USACO Section1.3 Barn Repair 解题报告

    barn1解题报告 —— icedream61 博客园(转载请注明出处)---------------------------------------------------------------- ...

  8. USACO Section1.3 Mixing Milk 解题报告

    milk解题报告 —— icedream61 博客园(转载请注明出处)----------------------------------------------------------------- ...

  9. USACO Section1.2 Palindromic Squares 解题报告

    palsquare解题报告 —— icedream61 博客园(转载请注明出处)------------------------------------------------------------ ...

随机推荐

  1. 解决Jenkins的错误“The Server rejected the connection: None of the protocols were accepted”

    1. 配置节点,配置好节点后,在节点机上运行已下载文件,双击执行,提示"The Server rejected the connection: None of the protocols w ...

  2. 引用类型(三):Function类型

    一. Function类型函数实际上是对象.每个函数都是Function类型都实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象都指针.1.函数通常是使 ...

  3. ios 创建自己的.a文件

    1:首先创建个 静态工程(Cocoa Touch Static Library); 方法名字,一定要暴露在.h文件中, 2:分别在模拟器环境和真机环境下 Analyze (shift+command+ ...

  4. JAVA HTTP连接(HttpURLConnection)中使用代理(Proxy)及其验证(Authentication)

    public static void main(String[] args) { // TODO Auto-generated method stub try { URL url = new URL( ...

  5. 如何使用MongoDB+Springboot实现分布式ID?

    转载请标明出处: http://blog.csdn.net/forezp/article/details/69056017 本文出自方志朋的博客 一.背景 如何实现分布式id,搜索相关的资料,一般会给 ...

  6. linux服务器安装nginx及使用

    Nginx在个人的使用之后,感觉非常的方便,所以在这里给出自己安装配置方案.它是一款高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器.负载均衡是个不错的选择. ...

  7. 使用免费公开的api接口示例(iOS)

    做项目难免需要测试,要测试就需要一些接口,现在网上的很多接口都是需要收费的. 以下是目前找到的免费 JSON API免费接口 云聚数据 网吧数据 其中选取了一个百度百科的接口 百度接口 百度百科接口: ...

  8. Python 初始—(项目 目录结构)

    在os 包下,给出 import os ,os.path.abspath(__file__)获取当前文件的相对路径,os.path.dirname 获取当前文件所在的文件夹目录 print(os.pa ...

  9. Linux文件服务器实战(系统用户)

    ftp匿名用户设置完成之后任何人都可以访问服务器端文件,目录,甚至可以修改删除文件和目录,,那如何存放私密文件并保证文件或者目录专属于拥有者呢,就需要使用vsftp系统用户来实现了. 1.在linux ...

  10. Xtrabackup实现MySQL备份

    一.xtrabackup介绍 Xtrabackup是一个对InnoDB做数据备份的工具,支持在线热备份(备份时不影响数据读写)它由percona提供的mysql数据库备份工具,据官方介绍,这也是世界上 ...