← 返回目录

算法笔试模拟题精解之“难住Tom 的问题”

第 24 / 74 卷日期:

算法笔试模拟题精解之“难住 Tom 的问题”

贡献者 | 猿圈

简介:拿样例来说 2 3 100, 说明有 3 个桶,第 0 个桶一定是空的,那么符合条

件的有 12 种方案,我们需要从中推出转移方程。

题目描述

等级:困难

知识点:DP

查看题目:难住 Tom 的问题

Jerry 和 Tom 在公园里感到很无聊,于是就开始研究起来题目了,Jerry 有一个

n+1 个桶 (1<=n<=300),这些桶的编号为 0,1,2,...,n,然后让 Tom 去构造这些桶

( 每个桶可以看作 list),必须要满足以下的三个要求:

  1. 对于第 i 个桶里,它里面有 i 个数 ai,并且这些数不能大于 x(1<=ai<=300)。
  2. 对于第 i-1 个桶,它必须是第 i 个桶的子序列。
  3. 对于第 i 个桶,它的字典序要大于第 i-1 个桶。

问满足以上要求的方案有多少总,答案对 y(2<=y<=1e9) 取模。

输入三行数据,分别为 n,x,y,意思同题意。

输出一个数,表示最终的方案数,答案对 y 取模。

示例 1

输入:

3

100

输出:

12

解题方法:

拿样例来说 2 3 100, 说明有 3 个桶,第 0 个桶一定是空的,那么符合条件的有

以下 12 种方案:

({0},{1},{1,1}),

({0},{1},{1,2}),

({0},{1},{1,3}),

({0},{1},{2,1}),

({0},{1},{3,1}),

({0},{2},{2,1}),

({0},{2},{2,2}),

({0},{2},{3,1}),

({0},{3},{3,1}),

({0},{3},{3,2}),

({0},{3},{3,3}),

这只是简单的列举出了所有的情况,我们需要从中推出转移方程。

以 {0},{2} 为例,要构造出第三个桶就相当于往第二个桶中插入一个数字;

那么如果这个数字插在 2 的左边,一定是要比 2 大的数才可以,如果插到右边

对于这个情况来说没有限制条件,如果对于位数较多的数列来说也要考虑到字典序

的因素。

所以我们考虑 fi[p] 中,i 表示当前的长度,j 表示取到的数字,p 表示有 p 个位置

可插。

一共有三种状态,当你的 p 没位置了就没有地方可插,那么这个数就不插了

dpi[i] += dpi[p], 这里的第三维为 i 是因为所有的数都比 j+1 小,所以插到哪里都是可

以的,所以为 i。

如果 p 不为 0 的话说明有地方可插,这时可以考虑插在这个地方或者不插这个地

方,如果不插这个地方 dpi[p-1]+=dpi[p],如果插这个地方 dpi+1[p]+=dpi[p],这里

还需要乘以 p+1 是因为还有 p 个位置。

时间复杂度:O(n^3)

空间复杂度:n^3

看完之后是不是有了答题思路了呢,快来练练手吧:难住 Tom 的问题

全站分卷索引 · 74 卷
  1. 1一、算法思想
  2. 2算法笔试模拟题精解之“打怪兽”
  3. 31.2 贪心
  4. 4算法笔试模拟题精解之“最强的团队”
  5. 5算法笔试模拟题精解之“Tom 爱吃巧克力”
  6. 6算法笔试模拟题精解之“吃奶酪”
  7. 7算法笔试模拟题精解之“一的个数”
  8. 8算法笔试模拟题精解之“Bob 的花束”
  9. 9算法笔试模拟题精解之“钱庄”
  10. 10算法笔试模拟题精解之“移动射击”
  11. 11算法笔试模拟题精解之“相似数组”
  12. 12算法笔试模拟题精解之“过吊桥”
  13. 13算法笔试模拟题精解之“完美排列”
  14. 14算法笔试模拟题精解之“采摘圣诞果”
  15. 15算法比赛模拟题精解之“Tairitsu and Dynamic Objects”
  16. 16算法笔试模拟题精解之“Codancer 的炸弹引爆”
  17. 17算法笔试模拟题精解之“学习小组”
  18. 18算法笔试模拟题精解之“恢复字符串”
  19. 191.3 DP/ 动态规划
  20. 20算法笔试模拟题精解之“寻找等比数列”
  21. 21算法笔试模拟题精解之“字符配对”
  22. 22算法笔试模拟题精解之“数组染色”
  23. 23算法笔试模拟题精解之“连绵的群山”
  24. 24算法笔试模拟题精解之“难住Tom 的问题”
  25. 25算法笔试模拟题精解之“变化的字符”
  26. 26算法笔试模拟题精解之“跳房子”
  27. 27算法笔试模拟题精解之“寒假活动”
  28. 28算法笔试模拟题精解之“最短路”
  29. 29算法笔试模拟题精解之“codancer 上楼”
  30. 30算法笔试模拟题精解之“木棒拼接”
  31. 31算法笔试模拟题精解之“Codancer 的数组封印”
  32. 32算法笔试模拟题精解之“Jerry 的异或运算”
  33. 33算法笔试模拟题精解之“小明的数学作业”
  34. 34算法笔试模拟题精解之“奇偶数列”
  35. 351.4 剪枝
  36. 361.5 尺取法
  37. 37算法笔试模拟题精解之“调整数组”
  38. 38算法笔试模拟题精解之“最优分组”
  39. 39算法笔试模拟题精解之“破译密码”
  40. 40二、数据结构
  41. 412.2 搜索
  42. 42算法笔试模拟题精解之“能量半径”
  43. 43算法笔试模拟题精解之“苹果收获程序”
  44. 44算法笔试模拟题精解之“恐怖的辐射”
  45. 45算法笔试模拟题精解之“树的拆分”
  46. 46算法笔试模拟题精解之“Password”
  47. 47算法笔试模拟题精解之“神奇数字在哪里”
  48. 48算法笔试模拟题精解之“神奇的棋子”
  49. 492.3 树
  50. 50算法笔试模拟题精解之“Codancer 的旅行”
  51. 51算法笔试模拟题精解之“Codancer 的求和”
  52. 52算法笔试模拟题精解之“找出二叉搜索树的第2 大的数”
  53. 532.4 线型
  54. 54算法笔试模拟题精解之“最活跃的数”
  55. 55算法笔试模拟题精解之“非递减序列”
  56. 56算法笔试模拟题精解之“Tom 跳方格”
  57. 57算法笔试模拟题精解之“复杂的字符串”
  58. 58算法笔试模拟题精解之“神秘消失”
  59. 59三、计算
  60. 60算法笔试模拟题精解之“简单题?
  61. 61算法笔试模拟题精解之“朋友一生一起走”
  62. 62算法笔试模拟题精解之“正三角塔”
  63. 63算法笔试模拟题精解之“组队难题”
  64. 64算法笔试模拟题精解之“2n 合体”
  65. 65算法笔试模拟题精解之“平行线”
  66. 66算法笔试模拟题精解之“叠叠高”
  67. 67算法笔试模拟题精解之“公平”
  68. 68算法笔试模拟题精解之“Tom 的手工课”
  69. 69算法笔试模拟题精解之“填数问题”
  70. 70算法笔试模拟题精解之“Jerry 的考验”
  71. 71算法笔试模拟题精解之“超车”
  72. 72算法笔试模拟题精解之“坏掉的时钟”
  73. 73算法笔试模拟题精解之“期末考试”
  74. 74算法笔试模拟题精解之“滑雪比赛”