关闭

USACO-Section 1.2 Milking Cows[数组模拟]

标签: c语言
81人阅读 评论(0) 收藏 举报
分类:

2017 -5- 24
这道题的基本想法就是,利用数组模拟。开一个布尔型的标记数组,若标记值为true,表明这个时间是至少有一头牛是出于被喂奶的状态的。在输入每个农名的时间段的时候,可以用memset方法直接填充那个时间段。输入完成做个统计就行。

/*
ID: 13913351
LANG: C++
PROG: milk2
*/
#include<iostream>
#include<string.h>
#include<fstream>
#define cin fin
#define cout fout
using namespace std;
string inputFile = "milk2.in";
string outputFile = "milk2.out"; 
ifstream fin(inputfile.c_str());
ofstream fout(outputfile.c_str());
int a[5001][2];
bool mark[1000001];//标记数组
int main()
{
    int N;
    cin>>N;
    int i;
    for(i=1;i<=N;i++)
    {
        cin>>a[i][0]>>a[i][1];
    }
    int sum=2;
    int k;
    memset(mark,false,sizeof(mark));
    int bound1=a[1][0],bound2=0;
    for(i=1;i<=N;i++)
    {
         memset(mark+a[i][0],true,a[i][1]-a[i][0]);
         if(bound1>a[i][0])
         {
            bound1=a[i][0];
         }
         if(bound2<a[i][1])
         {
            bound2=a[i][1];
         }  
    }
    //用bound1 bound2记录农名整个活动的开始时间和结束时间
    int max1=0,max2=0;
    //max2表示至少有一头牛被喂奶的最长连续时间
    //max1表示没有牛被喂奶的最长连续时间
    int l1=0,l2=0;//临时变量
    for(i=bound1;i<=bound2;i++)
    {   
        if(mark[i]==true)
        {
            if(max1<l2)
            {
                max1=l2;
            }
            l2=0;//
            l1++;
        }
        if(mark[i]==false)
        {
            if(max2<l1)
            {
                max2=l1;
            }
            l2++;
            l1=0;
        }
    } 
    cout<<max2<<" "<<max1<<endl;
    return 0;
 } 

祝大家生活愉快!!!

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

POJ 2182 Lost Cows(树状数组,暴力解法)

POJ 2182 Lost Cows(树状数组,暴力解法) 分析:        其实这道题目只要会手算用例就能暴力解决。        假设读入题目给的数组a[n],其中a[1]...
  • u013480600
  • u013480600
  • 2014-03-20 02:00
  • 1651

USACO入门以及提交格式

从今天开始正式尝试usaco,刚注册了账号,发现验证码怎么都刷不出来,后来查了才知道是谷歌的验证码,被墙掉了,只能翻了墙才注册好 【usaco是美国中学生的官方竞赛网站,美国著名在线题库,专门为信息...
  • niskoy
  • niskoy
  • 2015-12-14 21:52
  • 1607

POJ 1990 MooFest(想法题&树状数组)

MooFest http://poj.org/problem?id=1990 Time Limit: 1000MS Memory Limit: 30000K Description Every ...
  • synapse7
  • synapse7
  • 2013-08-01 22:35
  • 1320

USACO-Section 1.2 Milking Cows【贪心算法】

中文描述:三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒。第二个农民在700秒开始,在 1200秒结束。第三个农民在1500秒开...
  • tjj1998
  • tjj1998
  • 2017-05-21 10:11
  • 198

USACO-Section1.2 Milking Cows [线段树]

2017-5-23 题目大意: 读入N个农民(1 <= N <= 5000)挤N头牛的工作时间列表, 求最长至少有一人在挤奶的时间段。 最长的无人挤奶的时间段。(从有人挤奶开始算起)...
  • mujinuist
  • mujinuist
  • 2017-05-23 22:54
  • 68

【USACO-Chapter1-1.2】【模拟】Milking Cows

【题目描述】 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒。第二个农民在700秒开始,在 1200秒结束。第三个农民在1...
  • njlcazl
  • njlcazl
  • 2012-06-17 17:54
  • 1134

【模拟】洛谷 P1204 [USACO1.2]挤牛奶Milking Cows

题目描述三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶。第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒。第二个农民在700秒开始,在 1200秒结束。第三个农民在1500秒开始...
  • hyj542682306
  • hyj542682306
  • 2017-05-08 11:01
  • 166

USACO Section 1.2.2 Milking Cows

题目 Milking Cows Three farmers rise at 5 am each morning and head for the barn to milk ...
  • kzzhr
  • kzzhr
  • 2013-03-04 22:23
  • 1110

USACO s1.2.Milking Cows(求最长连续时间和最长间断时间)

题意:输入多个时间段,表示喂牛的时间,问喂牛的最长的持续时间和不喂牛的最长的时间。 key:注意输入的时间没有先后顺序。有两种方法。一是对时间段进行排序,比较每段时间的的末尾就行了,记得求得最大...
  • Joe__Chen
  • Joe__Chen
  • 2015-02-04 15:17
  • 342

USACO 1.2 Milking Cows

Milking Cows  方法1: 动态规划? y
  • baidu_23081367
  • baidu_23081367
  • 2014-11-12 12:20
  • 290
    个人资料
    • 访问:1725次
    • 积分:196
    • 等级:
    • 排名:千里之外
    • 原创:17篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条