202104-4 校门外的树

  • 题目链接
    • 题型分析
    • 代码
    • 但运行超时,只能拿到60分,欢迎各位提问和改进!

题目链接

http://118.190.20.162/view.page?gpid=T125

题型分析

典型的DP问题

递推公式:
f[i] = f[i] + f[j] *calc(i,j)

含义:

aj - ai 表示到i为止的最后一个区间,其长度为d,该区间可以被分成以k为单位的区间。
k的取值范围是q[d] (小于d的所有约数)

f[i] 表示到第i个障碍物前已有的方案数
calc(j,i) 表示第j个障碍物到第i个障碍物之间的方案数

初始化:
f[0] = 1

代码思路:
首先求出1-M之间每个数的约数,将其存储在q中备用。
从第二个障碍物起开始计算,由于方案不能重复,因此需要设置一个st的布尔数组用于记录哪些k已经使用,注意!每一轮都要重新初始化st。
从后往前遍历j。
对于每一个j,需要计算与i的距离d,针对距离d中可以选取的所有k进行遍历,如果该k没有被访问,res+1并将其对应的st[k]=False。
此处需要注意st[d]要设置成True!!【这里我也很疑惑,欢迎大佬评论区解答】
接下来利用递推公式计算f[i]

f[n-1]即为最终方案数!

代码

# 校门外的树
n = int(input())
a = list(map(int, input().split()))N = n+1
M = a[-1]+1MOD = 1e9 + 7f = [0 for i in range(N)]  # 存储状态
q = [[] for i in range(M)]  # 存储每个数的约数[因数]
# 求1-M之间每个数的约数
for i in range(1, M):j = i * 2while j < M:q[j].append(i)j += i
f[0] = 1
for i in range(1, n):st = [False for i in range(M)]  # bool数组  用于存储该k是否被用过 每次初始化一下st数组for j in range(i - 1, -1, -1):d = a[i] - a[j]  # 计算一下a[i]到a[j]的距离res = 0# 枚举一下d的所有约数for k in q[d]:if st[k]!=True:res += 1st[k] = Truest[d] = Truef[i] = (f[i] + f[j] * res) % MOD
print(int(f[n - 1]))

但运行超时,只能拿到60分,欢迎各位提问和改进!

CCF 202104-4 校门外的树 Python相关推荐

  1. 洛谷——P1047 校门外的树 python实现

    洛谷--P1047 校门外的树 python实现 l, m = map(int, input().split(' ')) trees = [True]*(l+1) for i in range(m): ...

  2. P1276 校门外的树(增强版)(线段树)(校门三部曲)难度⭐⭐⭐

    校门三部曲,总算完结了!完结散花! 难度呈阶梯状,都可以用线段树解决. 第一部 P1047 校门外的树(线段树优化)难度⭐⭐ 第二部 P1276 校门外的树(增强版)(线段树)校门三部曲难度⭐⭐⭐ 第 ...

  3. P1047 校门外的树(线段树优化)(校门三部曲)难度⭐⭐

    校门三部曲,总算完结了!完结散花! 难度呈阶梯状,都可以用线段树解决. 第一部 P1047 校门外的树(线段树优化)难度⭐⭐ 第二部 P1276 校门外的树(增强版)(线段树)校门三部曲难度⭐⭐⭐ 第 ...

  4. Vijos P1103 校门外的树【线段树,模拟】

    校门外的树 描述 某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米.我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置:数轴上的每个整数点,即0,1,2,--, ...

  5. 校门外的树——树状数组+区间修改

    校门外的树 [题目分析]题目描述的是一种区间修改,看起来好像要用线段树.但是对于这种区间内部没有差别并且查询的是区间内的类别的问题,是可以转化为树状数组进行的.毕竟树状数组更加简单. 我们的关注点应该 ...

  6. P1047 [NOIP2005 普及组] 校门外的树(python3实现)

    [NOIP2005 普及组] 校门外的树 - 洛谷 """P1047 [NOIP2005 普及组] 校门外的树(python3实现) https://www.luogu. ...

  7. 信息学奥赛一本通 1107:校门外的树 | 1931:【05NOIP普及组】校门外的树 | OpenJudge NOI 1.6 06 | 洛谷 P1047 [NOIP2005 普及组] 校门外的树

    [题目链接] ybt 1107:校门外的树 ybt 1931:[05NOIP普及组]校门外的树 OpenJudge NOI 1.6 06:校门外的树 洛谷 P1047 [NOIP2005 普及组] 校 ...

  8. 信息学奥赛一本通(1107:校门外的树)

    1107:校门外的树 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 44359     通过数: 23491 [题目描述] 某校大门外长度为L的马路上有一排树,每 ...

  9. 【解题报告】VijosP1448校门外的树(困难版)

    原题: 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的-- 如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作: K=1,K=1,读入l ...

最新文章

  1. Android开发--用户定位服务--UserLocation
  2. Arista与思科新一轮交锋,Arista略胜一筹
  3. 全志线刷工具如何刷linux,全志 Allwinner V3S 开发环境搭建 (二)安装必要工具
  4. 洛谷 1087——FBI树
  5. C# String和string的区别
  6. java try的用法_Java中try、catch的使用方法
  7. BUUCTF Web [极客大挑战 2019]EasySQL
  8. 国家开放大学2021春1070组织行为学题目
  9. Artstudio Pro Mac(绘图与图片编辑软件)特别版
  10. 千万IOPS背后,宏杉科技“MS7000G2-Mach”为金融核心业务赋能
  11. 越狱开发笔记(三)——非越狱App砸壳
  12. 特征工程之特征选择(4)----嵌入法(Embed)
  13. 破解光纤入户,电信送的上海贝尔RG2000-CA,过程说明·~~
  14. VR看房项目总结(1)
  15. git push报错 protocol error: bad line length character: Acti
  16. c语言程序设计基础程序改错,c语言程序设计改错信息.docx
  17. c语言常用算法pdf,妙趣横生的算法(C语言实现 第2版) 带目录完整pdf[94MB]
  18. 图解机器学习-稀疏学习-matlab源码
  19. 一个单点登录系统设计
  20. 坑爹的hiredis API使用

热门文章

  1. 2、以太网基础知识——IP协议
  2. 算法提高课-搜索-最短路模型-AcWing 1100. 抓住那头牛:bfs
  3. CSP认证201403-3 命令行选项[C++题解]:模拟题、字符串处理、stringstream处理getline
  4. 《剑指offer》c++版本 16.数值的整数次方
  5. Linux 环境编程 用户层定时器使用二 timer_create的使用
  6. 简单计算器的设计java_(基于java的简易计算器的设计.doc
  7. 自考计算机及应用笔记,自考“计算机及应用”专业论文参考范文
  8. 四级计算机基础知识,全国计算机等级考试四级通关攻略
  9. php in方法,PHP函数in_array()使用详解
  10. 主页被挟持 火狐浏览器_看过来!关于IE、360浏览器访问学校部分网站的设置说明在这里...