zoukankan      html  css  js  c++  java
  • BZOJ 3893 Cow Jog

    Description

    The cows are out exercising their hooves again! There are (N) cows jogging on an infinitely-long single-lane track ((1 le N le 10^{5})). 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 le T le 10^{9})). 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

    这道题其实不是特别难想(但我TMD还是想WA了。。。QAQ)。
    思考一下,如果对于某个奶牛(p),如果(p-1,p-2,...,p-i)都能追上(p),那么这些奶牛在最后都能成为一个整体;否则如果中间有一个(p-j)断开了,这个就无法与(p)成为一个整体,在(p-j)前面也没办法。所以对于(p-j)重新考虑。

    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    
    typedef long long ll;
    #define maxn (100010)
    #define eps (1e-7)
    int N,T,ans,s[maxn],v[maxn];
    
    int main()
    {
    	freopen("3893.in","r",stdin);
    	freopen("3893.out","w",stdout);
    	scanf("%d %d",&N,&T); 
    	for (int i = 1;i <= N;++i) scanf("%d %d",s+i,v+i);
    	for (int i = N;i >= 1;)
    	{
    		int p = i; ans++;
    		for (--i;i&&(s[p]-s[i])<=(ll)(v[i]-v[p])*(ll)T;--i);
    	}
    	printf("%d",ans);
    	fclose(stdin); fclose(stdout);
    	return 0;
    }
    
  • 相关阅读:
    003-2021 java.sql.SQLSyntaxErrorException: Unknown column 'Kitty' in 'where clause'
    002-2021 SpringMVC文件跨服务器上传异常之 409 : 目录不存在
    001-2021 SpringMVC文件跨服务器上传异常之405 : UniformInterfaceException : PUT http://localhost:9090/uploads/xxx returned a response status of 405 Method Not Allowed
    JUnit错误 : java.lang.NoSuchMethodError: org.junit.runner.Description.createSuiteDescription
    char[]
    Sql语句执行与书写顺序
    Java深拷贝和浅拷贝区别
    C++析构函数详解
    浅谈c/c++中register关键字
    C++异常之栈解旋
  • 原文地址:https://www.cnblogs.com/mmlz/p/4319873.html
Copyright © 2011-2022 走看看