• Problem: [Usaco2014 Dec]Cow Jog


    Problem: [Usaco2014 Dec]Cow Jog

    Time Limit: 1 Sec Memory Limit: 128 MB

    Description

    奶牛们又出来锻炼她们的蹄子了!这里有N头奶牛在无穷无尽的单车道上慢(1≤N≤100,000)。每一头奶牛在道路的不同位置起跑,且一些奶牛跑步的速度不同。因为道路只有一个车道,所以这些奶牛不能“超车”。当跑得快的奶牛追上另一头奶牛时,她必须慢下来以防撞上另一头奶牛,这样她也成为了这个跑步组的一员。最终,没有任何奶牛相互撞上。农夫John想知道当这发生时,一共有多少跑步组剩下。请帮助他算出这个数目。

    Input

    第一行输入包含整数N。
    以下的N行每行包含一个奶牛的初始位置和速度。位置是非负整数,速度是正整数;这两个数字最大值是十亿。所有的奶牛初始位置不同,数据将按照初始位置递增的顺序输入。

    Output

    一个单独的整数表示有多少组剩下。

    Sample Input

    5
    0 1
    1 2
    2 3
    3 2
    6 1

    Sample Output

    2
    HINT
    首先3号牛会追上4号牛,于是它的速度变为2,然后3,4号牛会追上5号牛,速度全变为1,然后2号牛会追上(3,4,5)号牛,成为一组。只有1号牛速度最慢,于是5头牛分成了2组
    代码如下

    #include<stdio.h>
    #define N 101000
    using namespace std;
    long long n,m=2000000000;
    long long p[N],s[N];
    int main() {
    	scanf("%d",&n);
    	int i;
    	for(i=1; i<=n; i++)
    	scanf("%d %d",p+i,s+i);
    	int ans=0;
    	for(i=n; i; i--) {
    		int now=i;
    		ans++;
    		while(i&&(s[i-1]-s[now])*m>=(p[now]-p[i-1]))i--;
    	}
    	printf("%d
    ",ans);
    	return 0;
    }
    
  • 相关阅读:
    云计算分布式大数据神器Spark实战高手之旅
    Spring IOC及AOP学习总结
    Win7下不能查看xp系统共享的文件,解决方法
    c#怎样获取excel单元格的RGB颜色
    MySQL 全角转换为半角
    【剑指offer】旋转数组的最小值
    POJ 2524 :Ubiquitous Religions
    GitLal+sourceTree版本号管理
    ASP.NET MVC 过滤器(五)
    Java设计模式之观察者模式
  • 原文地址:https://www.cnblogs.com/ZhaoChongyan/p/11740447.html
Copyright © 2020-2023  润新知