1. 程式人生 > >cogs 1945. 奶牛跑步

cogs 1945. 奶牛跑步

pac using 輸出 tdi open tin set void pri

★ 輸入文件:cowjoga.in 輸出文件:cowjoga.out 簡單對比
時間限制:1 s 內存限制:256 MB

【題目描述】


奶牛們又興高采烈地出去運動了!一共有N(1 <= N <= 100,000)頭牛在一條無限長的單向羊腸小道上慢跑。每頭牛在小道上的起點都不同,牛兒們的速度也不盡相同。

這條羊腸小道太窄了,奶牛們沒辦法"超車",如果一頭快速牛追上了前邊的慢速牛,她就必須減速,從而融入這些慢速牛集團中,變成跟前面的牛一樣的速度。

牛兒們一共要跑T(1 <= T <= 1,000,000,000)分鐘,請幫FJ計算一下,當時間結束時,牛兒們一共會形成多少個集團。


【輸入格式】


第一行有兩個整數N和T;

接下來有N行,每行有兩個數,第一個數是一個非負整數,表示一頭牛的起始位置,第二個數是一個正整數,表示該牛的速度;兩個數均不超過10^9,所有的牛起始位置都不同,所以輸入文件是以起始位置升序的方式給出數據。


【輸出格式】

輸出一個整數,表示T分鐘後的集團數。

【樣例輸入】

5 3
0 1
1 2
2 3
3 2
6 1

【樣例輸出】

3
 1 //從第n頭奶牛開始枚舉,若之前奶牛終點<之後奶牛終點 ,ans++; 
 2 
 3 #include<cmath>
 4 #include<cstring>
 5
#include<algorithm> 6 #include<iostream> 7 #include<cstdlib> 8 #include<cstdio> 9 #define LL long long 10 11 using namespace std; 12 const int maxn=105000; 13 14 struct Node { 15 LL set,speed; 16 } a[maxn]; 17 18 int n,t; 19 20 void Init() 21 { 22 scanf("%d%d",&n,&t);
23 LL date,last=0,tot=1; 24 for(int i=1; i<=n; i++)scanf("%lld%lld",&a[i].set,&a[i].speed); 25 for(int i=n; i>=1; i--) 26 { 27 date=a[i].speed*t+a[i].set; 28 if(i==n) 29 { 30 last=date; 31 continue; 32 } 33 if(date<last)tot++,last=date; 34 } 35 printf("%lld\n",tot); 36 } 37 38 int main() 39 { 40 freopen("cowjoga.in","r",stdin); 41 freopen("cowjoga.out","w",stdout); 42 Init(); 43 return 0; 44 }

cogs 1945. 奶牛跑步