洛谷 3111 [USACO14DEC]牛慢跑Cow Jog_Sliver 题解

本蒟蒻又来发题解了,
一道较水的模拟题。
题意不过多解释,
思路如下:
在最开始的时候求出每头牛在t秒的位置(最终位置
然后,如果后一头牛追上了前一头牛,那就无视它,
把它们看成一个整体。
else
就++ ans;
上代码:

#include<bits/stdc++.h>
using namespace std;
//要开long long 
long long n, t, ans = 1, last[100010];
struct node
{
 long long s, p;
}a[100010];
int main()
{
 scanf("%lld%lld", &n, &t);//输入 
 for(int i = 1; i <= n; ++ i)
 {
  scanf("%lld%lld", &a[i].p, &a[i].s);//输入 
  last[i] = a[i].p + a[i].s * t;//记录下它的最终位置。 
 }
 for(int i = n - 1; i >= 1; -- i)
 {
  if(last[i] >= last[i + 1])//如果,追上来,就看成一样的 
   last[i] = last[i + 1];
  else
   ++ ans;//++ ans 
 }
 printf("%lld", ans);//输出 
 return 0;
}

猜你喜欢

转载自www.cnblogs.com/Flash-plus/p/12028333.html