prob

【问题描述】

浩浩和琳琳从小就在一个学校,关系非常好,他们经常在一起讨论题目,一起玩游戏,一起聊天。浩浩的数学成绩非常棒,立志当一名“千秋万载”的数学家J。

琳琳遇到不会做的数学题目,都会来问浩浩,浩浩每次都会热心的解决。可是就在昨天,琳琳问浩浩一道有关数列的题目,浩浩想了一整天,脑袋都想大了,还是没有结果,立志成为大数学家的浩浩不想在琳琳面前丢丑,于是回家冥思苦想了一晚上,结果……

至于结果怎么样了,还是大家自由想象吧,我们现在讨论的是琳琳问的这道题目:

 
 

对于这样一个奇怪的递推关系:

现在给定正整数N,P,要求An,你会做吗?

 

【输入文件】

输入只有两个正整数N,P(N,P<1001)。

 

【输出文件】

输出只有一行,即An。

【样例】

Prob.in

1 3

Prob.out

1

这是一道好题。因为sqrt(p)可能是无理数,所以不能够直接简单递推。

对ai进行手动迭代的时候,我们会发现任意的ai都可以表示成a(n-a*p-b*sqrt(p))的形式。

于是我们用f[i][j]表示a(n-i*p-j*sqrt(p))

f[i][j]的递推很简单

f[i][j] = f[i+1][j] + f[i][j+1] (n-i*p-j*sqrt(p) > p)

f[i][j] = 1 (n-i*p-j*sqrt(p)  <= p)

代入一个大数据发现会爆,所以使用高精,高精照样爆,只好使用压6位,输出的时候记得要%06lf,补位!!

#include <cstdio>
#include <cmath>long f[1010][1010][60];
const long bit = 1000000;void add(long* a,long* b,long* c)
{c[0] = a[0]>b[0]?a[0]:b[0];c[0] ++;for (long i=1;i<c[0]+1;i++){c[i] += a[i]+b[i];if (c[i] > bit-1){c[i] -= bit;c[i+1] ++;}}if (c[c[0]] == 0) c[0]--;
}void print(long* a)
{printf("%ld",a[a[0]]);for (long i=a[0]-1;i>0;i--){printf("%06ld",a[i]);}printf("\n");
}int main()
{freopen("prob.in","r",stdin);freopen("prob.out","w",stdout);long n,p;scanf("%ld%ld",&n,&p);for (long i=(n/p);i>-1;i--){for (long j=long((n/sqrt(p)))+1;j>-1;j--){if (n-(i+1)*p<=0||j*j*p>=n*n+(i+1)*(i+1)*p*p-2*n*p*(i+1)){f[i][j][0] = 1;f[i][j][1] = 1;f[i][j][2] = 0;}else{add(f[i+1][j],f[i][j+1],f[i][j]);}}}print(f[0][0]);
}

【动态规划】prob相关推荐

  1. 强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例

    强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例 1. 引言 在这个部分补充之前马尔科夫决策和动态规划部分的代码.在以后的内容我会把相关代码都附到相关内容的后面.本部 ...

  2. LeetCode 808. 分汤(动态规划)

    文章目录 1. 题目 2. 解题 1. 题目 有 A 和 B 两种类型的汤.一开始每种类型的汤有 N 毫升.有四种分配操作: 提供 100ml 的汤A 和 0ml 的汤B. 提供 75ml 的汤A 和 ...

  3. 分别用线性规划和动态规划求解打家劫舍问题(力扣198)

    写在前面: 1. 本人是只挣扎在数模海洋的小可怜,最近同时学线性规划和动态规划,于是就有了这篇博客 2. 编程使用matlab 3. 动态规划解法参考 数学建模清风动态规划课程https://www. ...

  4. 【基于贪心的树型动态规划】【NOI2007】追捕盗贼

    问题描述 魔法国度 Magic Land 里最近出现了一个大盗 Frank,他在 Magic Land 四处作案,专门窃取政府机关的机密文件(因而有人怀疑 Frank 是敌国派来的间谍). 为了捉住 ...

  5. 动态规划维特比算法c语言实现,viterbi算法实现

    文章由 整理获得. Viterbi以它发明者的名字命名. Viterbi算法:给出一个观测序列o1,o2,o3 -,我们希望找到观测序列背后的隐藏状态序列s1, s2, s3, -:这样一种由动态规划 ...

  6. 伍六七带你学算法 动态规划 ——不同路径

    力扣 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格 ...

  7. 由动态规划计算编辑距离引发的思考

    简单介绍 编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the- ...

  8. LeetCode 10. Regular Expression Matching python特性、动态规划、递归

    前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...

  9. 【动态规划】Part1

    1. 硬币找零 题目描述:假设有几种硬币,如1.3.5,并且数量无限.请找出能够组成某个数目的找零所使用最少的硬币数. 分析:   dp [0] = 0            dp [1] = 1 + ...

最新文章

  1. 仿抖音底部导航效果(一)
  2. ZOJ-2571 Big String Outspread 模拟
  3. 不同服务器之间进行传输
  4. Java实现几种常见排序方法
  5. tensorflow从入门到放弃(一)
  6. ML之监督学习算法之分类算法一 ——— 决策树算法
  7. 【Java】生成 .json格式文件工具类
  8. python ckeditor上传图片400错误_又一款python开发神器
  9. 异常检测算法之LOF
  10. yum提示Another app is currently holding the yum lock; waiting for it to exit...
  11. 2017.6.5 YY的GCD 失败总结
  12. nginx 监听非标准端口80,重定向端口丢失问题解决
  13. loj10131 暗的连锁
  14. Swift2.0新特性
  15. 【元器件学习笔记—电阻】(8)——电阻分压电路
  16. (Qt)windows下鼠标键盘热插拔监测
  17. 幽灵蛛(pholcus)(三)--strings学习资料
  18. thinkpad触控笔怎么用_联想yoga720触控笔怎么用
  19. 计算机DNS怎么配置,如何设置电脑的dns地址
  20. [论文阅读]Designing an Encoder for StyleGAN Image Manipulation

热门文章

  1. 用Python来检测微信好友是否拉黑你
  2. JAVA中的多线程与运动仿真(1)——用JAVA来放一场烟花
  3. 中大计算机考研复试刷人太狠,为何考研初试分数很高的人在复试中被刷?这4个致命失误你犯了?...
  4. 谈谈我对SEO快排现象的观察及其背后原理的分析
  5. 【C语言进阶】带你深度剖析那些常见的字符函数(一)
  6. 库卡机器人提示“无合适的mam文件“
  7. php frameset不显示,如何解决php加载frameset页面时显示空白问题
  8. 马云:大数据时代_最重要的是做最好的自己
  9. Excel之利用Excel的排序功能可以让表格整体按照某一列降序排列而排列(一)
  10. Surface Pro4详细拆机经验记录与分享