题目:

我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工。

  1. 我们在字节跳动大街的N个建筑中选定3个埋伏地点。

  2. 为了相互照应,我们决定相距最远的两名特工间的距离不超过D。

我特喵是个天才!经过精密的计算,我们从x中可行的埋伏方案中选出一种,这个方案万无一失,颤抖吧,孔连顺!

……

万万没想到,计划还是失败了,孔连顺化妆成小龙女,混在人群中逃出了字节跳动大街。只怪他的伪装太成功了。

请听题:给定N(可选作为埋伏点的建筑物数)、D(距离最远的两名特工的最大值)以及可选建筑物的坐标,计算在这次行动中,共有多少种埋伏选择。

注意:

1.两个特工不能埋伏在同一地点

2.三个特工是等价的:即同样的位置组合(A、B、C)只算一种方案,特工之间互换位置不算。

输入描述:

第一行包含空格分隔的两个数字N和D(1<=N<=1000000, 1<=D<=N)。

第二行包含N个建筑物的位置,每个位置用一个整数表示,从小到大排列(将字节跳动大街看做一个数组)

输出描述:

一个数字,表示不同埋伏方案的数量。结果可能溢出,请对999……(博主:照片没拍到,忘了是什么了)取模。


分析:

最大距离D确定后,可埋伏区间必为某段连续区间。从左到右扫描整个数组,记录每个位置埋伏一个人使,其余两人在右边埋伏共有多少种可能,最终全部相加得到结果。
代码:

a = input().split()
b = input().split()
n, d = int(a[0]), int(b[0])
alist = [int(x) for x in b]
#n, d = 7, 3
#alist = [1, 5, 6, 7, 8, 12, 13]ambush_kinds = []          # 记录第一个人埋伏在当前位置时,其他人的埋伏的种类
start = 0        # 指向第一个埋伏的人
end = 0        # 指向最后一个人最远埋伏距离# 定义组合函数C_n^k
def c(n, k):numerator = 1denominator = 1for i in range(k):numerator *= n-idenominator *= k-ireturn numerator / denominatorwhile start < n-2:                      # 终止条件:三个人埋伏在最后三个位置# 找到当前start对应的end的最远位置while end < n and alist[end] - alist[start] <= d:end += 1ambush_range = end - start          # 计算三人埋伏的范围if ambush_range < 3:                # 如果此范围太小不够三人埋伏,计数为0ambush_kinds.append(0)else:                               # 一人埋伏在start位置时,取余两人的埋伏种类ambush_kinds.append(c(ambush_range-1, 2))start += 1                          # 计算下一个start
print(sum(ambush_kinds))
#print(ambush_kinds)

一个好玩的编程小游戏——埋伏行动相关推荐

  1. 一个好玩的编程小游戏—— 母牛生小牛

    题目: 母牛从3~7岁初每年会生产1头小母牛,10岁后死亡(10岁任然存活),假设初始有一头刚出生的母牛,请问第n年有多少头母牛?(年从第一年开始计数) 注:第三年初会出生 第一头母牛,故第三年有两头 ...

  2. 分享一个好玩的JS小游戏

    前言 一个js的忍者小游戏 话不多说 如图所示 简单好玩 打发时间 代码 HTML <!DOCTYPE html> <html lang="en"> < ...

  3. python能做什么游戏-有趣又好玩的9个Python编程小游戏、简直太棒了

    打开搜狗搜索APP,查看更多精彩资讯 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃,面临这种困境该怎么办呢? 这时候就有一些大牛设计出用游戏来学 ...

  4. python小游戏合集-9个Python编程小游戏,有趣又好玩,简直太棒了

    前言 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃(笑哭),面临这种困境该怎么办呢?这时候就有一些大牛设计出用游戏来学习编程知识点,所以,这世界 ...

  5. python简单游戏程序设计_有趣又好玩的9个Python编程小游戏、简直太棒了

    打开搜狗搜索APP,查看更多精彩资讯 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃,面临这种困境该怎么办呢? 这时候就有一些大牛设计出用游戏来学 ...

  6. 9个Python编程小游戏,有趣又好玩,简直太棒了

    前言 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃(笑哭),面临这种困境该怎么办呢?这时候就有一些大牛设计出用游戏来学习编程知识点,所以,这世界 ...

  7. python井字棋_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  8. 编程一个最简单游戏_一个关于AI编程的游戏

    点击上方"机器学习与统计学",选择"置顶"公众号 重磅干货,第一时间送达 周末推荐一个正在玩的游戏,挺好玩的. <异常>是一个关于AI编程的游戏,在 ...

  9. python编程小游戏-python编程游戏有哪些

    python编程游戏有哪些?下面给大家介绍几款由Python开发的游戏: 1.Github上面有个项目Free Python Games,里面集合了不少的Python开发的小游戏,能玩,也适合新手用来 ...

最新文章

  1. linux c编译错误 cmake_symlink_library: System Error: Operation not supported
  2. python的自带数据集_解决Keras自带数据集与预训练model下载太慢问题
  3. leetcode:Minimum Depth of Binary Tree【Python版】
  4. odoo中的序列(自动增长的序列以及有条件的序列,ir.sequence)
  5. 利用真值表法求取主析取范式以及主合取范式的实现(C++)
  6. nuxt2中使用less
  7. python supervisor flask_supervisor配合uwsgi部署flask应用
  8. 深入解析MVVM架构
  9. 广东学考计算机专业要多少排位,太难了!2021年学考录取分数大暴涨!深职、广轻需要300分以上?...
  10. linux 系统安装mysql (rpm)
  11. 利用定时器中断方式控制led灯的闪烁速度_实验四 LED点阵
  12. Delphi 2007安装问题
  13. Linux服务器使用网络代理
  14. [Zcu106开发]离线环境下用Vitis搭建Zcu106嵌入式系统神经网络加速器踩坑实录
  15. 海外侨胞代表建议广东各市抱团出海开设名优特产品实体店
  16. php学习日志(5)-解决Windows Live Writer错误:WindowsLive.Writer.CoreServices.HttpRequestHelper的类型初始值设定发生异常...
  17. Nginx+obs直播服务器,推流连接失败
  18. Linux命令——parted
  19. 410款INTEL CPU详细技术资料速查表
  20. 基于Verilog HDL与虚拟实验平台的【计算机组成】与CPU实验第三章:三态门和多路器

热门文章

  1. Mybatis是什么以及Mybatis和JDBC的关系?
  2. css实现加载中loading动画效果
  3. 看曾国藩家书有感(1)
  4. 服务器主板显示wait,电脑开机出现wait怎么解决
  5. 阿里云服务器配置了安全组仍然无法访问端口问题
  6. 如何修改应用程序的图标以及exe文件的图标
  7. MySQL-基础代码(部分)+思维导图
  8. 微博The Networker Society社交网络联盟正式成立
  9. TiDB 在今日头条的实践
  10. glog日志宏分析与pr合并与bug引入hhh