题目大意

有N (1 <= N <= 100,000)头奶牛在一个单人的超长跑道上慢跑,每头牛的起点位置都不同。由于是单人跑道,所有他们之间不能相互超越。当一头速度快的奶牛追上另外一头奶牛的时候,他必须降速成同等速度。我们把这些跑走同一个位置而且同等速度的牛看成一个小组。

请计算T (1 <= T <= 1,000,000,000)时间后,奶牛们将分为多少小组。

题解

定义两头牛“能单独追上”为:若跑道上只有这两头牛,则它们能否追上。牛i和牛j(j>i)将会位于同一小组当且仅当j是位于i前方牛群中第一个能被i单独追上的牛(注意:是【前方牛群】,而不是【前方的牛】)。因为j一定时,能追上j的i有多个,所以倒序枚举。

注意:如果要暴力对拍,暴力程序应当尽量简单。如果写暴力程序无法保证正确性,写暴力程序也不值了。

#include <cstdio>
#include <cstring>
using namespace std; #define ll long long const int MAX_COW = 100010;
ll N, T; struct Cow
{
ll Pos, V;
}_cows[MAX_COW]; int main()
{
scanf("%lld%lld", &N, &T);
for (int i = 1; i <= N; i++)
scanf("%lld%lld", &_cows[i].Pos, &_cows[i].V);
ll groupCnt = N;
int p = N;
for (int i = N - 1; i >= 1; i--)
{
if ((_cows[i].V - _cows[p].V)*T >= _cows[p].Pos - _cows[i].Pos)
groupCnt--;
else
p = i;
}
printf("%lld\n", groupCnt);
return 0;
}

最新文章

  1. mvc实现上传视频预览
  2. html(二)
  3. MD5实现32位加密
  4. In App Purchase
  5. VS2012那点事儿
  6. 使用JS启动本地应用程序、屏幕键盘
  7. 对象序列化XML
  8. STL之Errors and Exceptions
  9. 判断DAG图
  10. vultr使用snapshots系统镜像备份安装vps
  11. 多线程+socket实现多人聊天室
  12. Chain TDNN/LSTM的拼帧索引、延时
  13. 使用Microsoft SyncToy 文件同步/备份 自动化处理
  14. Python_Mix*内置函数
  15. POJ1964-City Game
  16. 【转载】 星际争霸2的AI环境搭建
  17. zombodb 几点说明
  18. Junit + String/Integer/ArrayList/HashMap/TreeMap 基本使用Demo
  19. HDU 5925 Coconuts 离散化
  20. windows10下R配置Rstdio,怎么处理

热门文章

  1. POJ 2823 线段树 Or 单调队列
  2. Spring Cloud (2) 服务消费者-基础
  3. bootstrap的栅格系统和响应式工具
  4. classNum&#160;表示学生的班号,例如“class05”。 有如下List&#160; List&#160;list&#160;=&#160;new&#160;ArrayList();
  5. 大型工程多个目录下的Makefile写法
  6. 深圳面试一周记录——.NET(B/S)开发
  7. 【sqli-labs】 less40 GET -Blind based -String -Stacked(GET型基于盲注的堆叠查询字符型注入)
  8. Type inference
  9. webpack学习(六)—webpack+react+es6(第2篇)
  10. 构造函数+原型的js混合模式