[bzoj3893][Usaco2014 Dec]Cow Jog_暴力

Cow Jog bzoj-3893 Usaco-2014 Dec

题目大意题目链接

注释:略。


想法

先按照坐标排序。

我们发现每个牛只会被后面的牛影响。

所以我们考虑逆向枚举。

记录一下i+1~n的牛最近能到哪,然后判断一下当前的第i头牛能不能比那个值大就行了。

如果比那个值大,就说明当前牛能跟后面的牛合并。

如果当前的值比后面的值小,说明当前的牛是一群牛的开头。

最后,附上丑陋的代码.....

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#define N 100005 
using namespace std;
long long n,t,last[N];
struct cow
{
    long long spd,dic;
}a[N];
int main()
{
    cin >> n >> t ;
    for(int i=1;i<=n;i++)
    {
        scanf("%lld%lld",&a[i].dic,&a[i].spd);
        last[i]=a[i].dic+a[i].spd*t;
    }
    int ans=1;
    for(int i=n-1;i>=1;i--)
    {
        if(last[i]>=last[i+1]) last[i]=last[i+1];
        else ans++;
    }
    printf("%d\n",ans);
    return 0;
}

小结:最近从后向前的题好多的啊...

posted @ 2018-09-24 20:24  JZYshuraK_彧  阅读(218)  评论(0编辑  收藏  举报