zoukankan      html  css  js  c++  java
  • 3893: [Usaco2014 Dec]Cow Jog

    3893: [Usaco2014 Dec]Cow Jog

    Time Limit: 10 Sec  Memory Limit: 128 MB
    Submit: 174  Solved: 87
    [Submit][Status][Discuss]

    Description

    The cows are out exercising their hooves again! There are N cows jogging on an infinitely-long single-lane track (1 <= N <= 100,000). Each cow starts at a distinct position on the track, and some cows jog at different speeds. With only one lane in the track, cows cannot pass each other. When a faster cow catches up to another cow, she has to slow down to avoid running into the other cow, becoming part of the same running group. The cows will run for T minutes (1 <= T <= 1,000,000,000). Please help Farmer John determine how many groups will be left at this time. Two cows should be considered part of the same group if they are at the same position at the end of T minutes.
    在一条无限长的跑道上有N头牛,每头牛有自己的初始位置及奔跑的速度。牛之间不能互相穿透。当一只牛追上另一只牛时,它不得不慢下来,成为一个群体。求T分钟后一共有几个群体。

    Input

    The first line of input contains the two integers N and T. The following N lines each contain the initial position and speed of a single cow. Position is a nonnegative integer and speed is a positive integer; both numbers are at most 1 billion. All cows start at distinct positions, and these will be given in increasing order in the input.

    Output

    A single integer indicating how many groups remain after T minutes.

    Sample Input

    5 3
    0 1
    1 2
    2 3
    3 2
    6 1

    Sample Output

    3

    HINT

     

    Source

    Silver

    题解:显然,一头牛的速度不会被后面的牛所影响,于是直接O(n)扫一遍,像打擂台一样即可,这样子分堆数也就出来啦

     1 /**************************************************************
     2     Problem: 3893
     3     User: HansBug
     4     Language: Pascal
     5     Result: Accepted
     6     Time:1204 ms
     7     Memory:1008 kb
     8 ****************************************************************/
     9  
    10 var
    11    i,j,k,l,m,n,ans:longint;
    12    a,b:array[0..100100] of longint;
    13    t:int64;
    14 begin
    15      readln(n,t);
    16      for i:=1 to n do readln(a[i],b[i]);
    17      a[n+1]:=maxlongint;
    18      b[n+1]:=maxlongint;
    19      l:=n+1;
    20      for i:=n downto 1 do
    21          begin
    22               if (a[i]+(b[i]*t))<(a[l]+(b[l]*t)) then
    23                  begin
    24                       inc(ans);
    25                       l:=i;
    26                  end;
    27          end;
    28      writeln(ans);
    29 end.          
  • 相关阅读:
    NOI2015字符串游戏
    mathlover和她的粉丝团 西安电子科技大学第二届程序设计新生赛(同步赛)
    qko的烦恼 牛客练习赛34
    little w and Sum 牛客练习赛34
    little w and Soda 牛客练习赛34
    编辑器的选择 西安电子科技大学第二届程序设计新生赛(同步赛)
    or2?Scum! 西安电子科技大学第二届程序设计新生赛(同步赛)
    tokitsukaze and RPG 牛客练习赛33
    巴啦啦能量 哈尔滨理工大学软件与微电子学院第八届程序设计竞赛同步赛(低年级)
    CentOSmini安装gcc8.2
  • 原文地址:https://www.cnblogs.com/HansBug/p/4394875.html
Copyright © 2011-2022 走看看