链接:

https://ac.nowcoder.com/acm/contest/918/A

题意:

为了准备即将到来的蹄球锦标赛,Farmer John正在训练他的N头奶牛(方便起见,编号为1…N,其中1≤N≤100)进行传球。这些奶牛在牛棚一侧沿直线排列,第i号奶牛位于距离牛棚xi的地方(1≤xi≤1000)。每头奶牛都在不同的位置上。

在训练开始的时候,Farmer John会将若干个球传给不同的奶牛。当第i号奶牛接到球时,无论是从Farmer John或是从另一头奶牛传来的,她会将球传给最近的奶牛(如果有多头奶牛与她距离相同,她会传给其中距左边最远的那头奶牛)。为了使所有奶牛都有机会练习到传球,Farmer John想要确保每头奶牛都持球至少一次。帮助他求出为了达到这一目的他开始时至少要传出的球的数量。假设他在开始的时候能将球传给最适当的一组奶牛。

思路:

将位置排成一条线,第一头牛只能向右边传球,最后一头牛只能向左边传球。

如果两头相邻的牛,左边只能向右边传, 右边只能向左边传,则球的数量加1,同时,再左边一个只能向右边传,再右边只能向左边传,球数再加1。即>><<这种传球顺序,需要两个球。

代码:

#include <bits/stdc++.h>

using namespace std;

typedef long long LL;
const int MAXN = 1e3 + 10;
const int MOD = 1e9 + 7;
int n, m, k, t; int a[MAXN];
int b[MAXN];
int to[MAXN]; int main()
{
cin >> n;
for (int i = 1;i <= n;i++)
cin >> a[i];
sort(a+1, a+1+n);
for (int i = 1;i < n;i++)
b[i] = a[i+1]-a[i];
to[1] = 1;
to[n] = -1;
for (int i = 2;i < n;i++)
{
if (b[i] >= b[i-1])
to[i] = -1;
else
to[i] = 1;
}
int res = 0;
for (int i = 1;i < n;i++)
{
if (to[i] == 1 && to[i+1] == -1)
{
res++;
if (to[i-1] == 1 && to[i+2] == -1)
res++;
}
}
cout << res << endl; return 0;
}

最新文章

  1. ReactJs笔记
  2. JavaScript Cookies
  3. css2--collapse
  4. [转]C#网络编程(基本概念和操作) - Part.1
  5. More is better(MST)(求无向图中最大集合元素个数)
  6. c语言中较常见的由内存分配引起的错误_内存越界_内存未初始化_内存太小_结构体隐含指针
  7. Mysql主从复制的实现
  8. 解决java.sql.SQLException: Parameter number X is not an OUT parameter--转
  9. C语言一维指针的深入理解
  10. thinkphp 分组、页面跳转与ajax
  11. BigDecimal-解决商业计算
  12. 每日分享!~ JavaScript(拖拽事件)
  13. KVM 虚拟机的热迁移
  14. A1114. Family Property
  15. window10 matlabR2015b 安装minGw
  16. eclipse开启时报错问题
  17. hello2
  18. 梯度下降法原理与python实现
  19. Luogu 3620 数据备份 - Set
  20. bochs和硬盘管理

热门文章

  1. Gym - 101196G :That&#39;s One Hanoi-ed Teacher (递推)
  2. docker-ce安装与搭建私有仓库
  3. JAVAset容器基本知识
  4. redis的read error on connection错误解决
  5. Python模块-requests(二)
  6. linux命令-tar打包和压缩并用
  7. BO 与 VO 的属性拷贝 copyProperties(bo,vo)
  8. strstr strchr strrchr strrstr
  9. ssh远程转发使远程主机在所有ip上监听
  10. glib-2.40编译安装