cogs 1945. 奶牛跑步
阿新 • • 發佈:2017-06-19
pac using 輸出 tdi open tin set void pri ★ 輸入文件:
時間限制:1 s 內存限制:256 MB
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. 奶牛跑步