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.          
  • 相关阅读:
    【2020省选模拟】01.18比赛总结
    【2020省选模拟】01.17比赛总结
    利用dockerfile 安装一个tomcat7
    docker的基本安装和命令详解
    jumpserver1.4.1 安装过程
    Redis info参数总结
    ansible-service
    ansible-yum
    centos源码安装mariadb和Galera 多主集群
    ansible常用模块
  • 原文地址:https://www.cnblogs.com/HansBug/p/4394875.html
Copyright © 2011-2022 走看看