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.          
  • 相关阅读:
    linux 静态库和动态库(共享库)的制作与使用(注意覆盖问题)转
    手机号码格式正则表达式
    项目去除TFS关联、迁移重部署
    Excel中VLOOKUP函数的用法和注意点
    自定义打赏插件
    分享一个无需注册,无次数限制的Smile聊天机器人接口
    TCP/IP
    Java字典树
    平衡二叉树结构 AVL
    二叉搜索树(二叉排序树)BST
  • 原文地址:https://www.cnblogs.com/HansBug/p/4394875.html
Copyright © 2011-2022 走看看