一个好玩的编程小游戏——埋伏行动
题目:
我叫王大锤,是一名特工。我刚刚接到任务:在字节跳动大街进行埋伏,抓捕恐怖分子孔连顺。和我一起行动的还有另外两名特工。
我们在字节跳动大街的N个建筑中选定3个埋伏地点。
为了相互照应,我们决定相距最远的两名特工间的距离不超过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)
一个好玩的编程小游戏——埋伏行动相关推荐
- 一个好玩的编程小游戏—— 母牛生小牛
题目: 母牛从3~7岁初每年会生产1头小母牛,10岁后死亡(10岁任然存活),假设初始有一头刚出生的母牛,请问第n年有多少头母牛?(年从第一年开始计数) 注:第三年初会出生 第一头母牛,故第三年有两头 ...
- 分享一个好玩的JS小游戏
前言 一个js的忍者小游戏 话不多说 如图所示 简单好玩 打发时间 代码 HTML <!DOCTYPE html> <html lang="en"> < ...
- python能做什么游戏-有趣又好玩的9个Python编程小游戏、简直太棒了
打开搜狗搜索APP,查看更多精彩资讯 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃,面临这种困境该怎么办呢? 这时候就有一些大牛设计出用游戏来学 ...
- python小游戏合集-9个Python编程小游戏,有趣又好玩,简直太棒了
前言 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃(笑哭),面临这种困境该怎么办呢?这时候就有一些大牛设计出用游戏来学习编程知识点,所以,这世界 ...
- python简单游戏程序设计_有趣又好玩的9个Python编程小游戏、简直太棒了
打开搜狗搜索APP,查看更多精彩资讯 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃,面临这种困境该怎么办呢? 这时候就有一些大牛设计出用游戏来学 ...
- 9个Python编程小游戏,有趣又好玩,简直太棒了
前言 学习编程对大多数人来说是枯燥而无聊,大家有时候往往会觉得精神崩溃,提不起学习的兴趣,因此从入门到放弃(笑哭),面临这种困境该怎么办呢?这时候就有一些大牛设计出用游戏来学习编程知识点,所以,这世界 ...
- python井字棋_用Python做一个井字棋小游戏
井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...
- 编程一个最简单游戏_一个关于AI编程的游戏
点击上方"机器学习与统计学",选择"置顶"公众号 重磅干货,第一时间送达 周末推荐一个正在玩的游戏,挺好玩的. <异常>是一个关于AI编程的游戏,在 ...
- python编程小游戏-python编程游戏有哪些
python编程游戏有哪些?下面给大家介绍几款由Python开发的游戏: 1.Github上面有个项目Free Python Games,里面集合了不少的Python开发的小游戏,能玩,也适合新手用来 ...
最新文章
- linux c编译错误 cmake_symlink_library: System Error: Operation not supported
- python的自带数据集_解决Keras自带数据集与预训练model下载太慢问题
- leetcode:Minimum Depth of Binary Tree【Python版】
- odoo中的序列(自动增长的序列以及有条件的序列,ir.sequence)
- 利用真值表法求取主析取范式以及主合取范式的实现(C++)
- nuxt2中使用less
- python supervisor flask_supervisor配合uwsgi部署flask应用
- 深入解析MVVM架构
- 广东学考计算机专业要多少排位,太难了!2021年学考录取分数大暴涨!深职、广轻需要300分以上?...
- linux 系统安装mysql (rpm)
- 利用定时器中断方式控制led灯的闪烁速度_实验四 LED点阵
- Delphi 2007安装问题
- Linux服务器使用网络代理
- [Zcu106开发]离线环境下用Vitis搭建Zcu106嵌入式系统神经网络加速器踩坑实录
- 海外侨胞代表建议广东各市抱团出海开设名优特产品实体店
- php学习日志(5)-解决Windows Live Writer错误:WindowsLive.Writer.CoreServices.HttpRequestHelper的类型初始值设定发生异常...
- Nginx+obs直播服务器,推流连接失败
- Linux命令——parted
- 410款INTEL CPU详细技术资料速查表
- 基于Verilog HDL与虚拟实验平台的【计算机组成】与CPU实验第三章:三态门和多路器