【动态规划】prob
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相关推荐
- 强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例
强化学习(三) - Gym库介绍和使用,Markov决策程序实例,动态规划决策实例 1. 引言 在这个部分补充之前马尔科夫决策和动态规划部分的代码.在以后的内容我会把相关代码都附到相关内容的后面.本部 ...
- LeetCode 808. 分汤(动态规划)
文章目录 1. 题目 2. 解题 1. 题目 有 A 和 B 两种类型的汤.一开始每种类型的汤有 N 毫升.有四种分配操作: 提供 100ml 的汤A 和 0ml 的汤B. 提供 75ml 的汤A 和 ...
- 分别用线性规划和动态规划求解打家劫舍问题(力扣198)
写在前面: 1. 本人是只挣扎在数模海洋的小可怜,最近同时学线性规划和动态规划,于是就有了这篇博客 2. 编程使用matlab 3. 动态规划解法参考 数学建模清风动态规划课程https://www. ...
- 【基于贪心的树型动态规划】【NOI2007】追捕盗贼
问题描述 魔法国度 Magic Land 里最近出现了一个大盗 Frank,他在 Magic Land 四处作案,专门窃取政府机关的机密文件(因而有人怀疑 Frank 是敌国派来的间谍). 为了捉住 ...
- 动态规划维特比算法c语言实现,viterbi算法实现
文章由 整理获得. Viterbi以它发明者的名字命名. Viterbi算法:给出一个观测序列o1,o2,o3 -,我们希望找到观测序列背后的隐藏状态序列s1, s2, s3, -:这样一种由动态规划 ...
- 伍六七带你学算法 动态规划 ——不同路径
力扣 62. 不同路径 难度 中等 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为"Start" ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格 ...
- 由动态规划计算编辑距离引发的思考
简单介绍 编辑距离算法: https://www.cnblogs.com/BlackStorm/p/5400809.html https://wizardforcel.gitbooks.io/the- ...
- LeetCode 10. Regular Expression Matching python特性、动态规划、递归
前言 本文主要提供三种不同的解法,分别是利用python的特性.动态规划.递归方法解决这个问题 使用python正则属性 import reclass Solution2:# @return a bo ...
- 【动态规划】Part1
1. 硬币找零 题目描述:假设有几种硬币,如1.3.5,并且数量无限.请找出能够组成某个数目的找零所使用最少的硬币数. 分析: dp [0] = 0 dp [1] = 1 + ...
最新文章
- 仿抖音底部导航效果(一)
- ZOJ-2571 Big String Outspread 模拟
- 不同服务器之间进行传输
- Java实现几种常见排序方法
- tensorflow从入门到放弃(一)
- ML之监督学习算法之分类算法一 ——— 决策树算法
- 【Java】生成 .json格式文件工具类
- python ckeditor上传图片400错误_又一款python开发神器
- 异常检测算法之LOF
- yum提示Another app is currently holding the yum lock; waiting for it to exit...
- 2017.6.5 YY的GCD 失败总结
- nginx 监听非标准端口80,重定向端口丢失问题解决
- loj10131 暗的连锁
- Swift2.0新特性
- 【元器件学习笔记—电阻】(8)——电阻分压电路
- (Qt)windows下鼠标键盘热插拔监测
- 幽灵蛛(pholcus)(三)--strings学习资料
- thinkpad触控笔怎么用_联想yoga720触控笔怎么用
- 计算机DNS怎么配置,如何设置电脑的dns地址
- [论文阅读]Designing an Encoder for StyleGAN Image Manipulation
热门文章
- 用Python来检测微信好友是否拉黑你
- JAVA中的多线程与运动仿真(1)——用JAVA来放一场烟花
- 中大计算机考研复试刷人太狠,为何考研初试分数很高的人在复试中被刷?这4个致命失误你犯了?...
- 谈谈我对SEO快排现象的观察及其背后原理的分析
- 【C语言进阶】带你深度剖析那些常见的字符函数(一)
- 库卡机器人提示“无合适的mam文件“
- php frameset不显示,如何解决php加载frameset页面时显示空白问题
- 马云:大数据时代_最重要的是做最好的自己
- Excel之利用Excel的排序功能可以让表格整体按照某一列降序排列而排列(一)
- Surface Pro4详细拆机经验记录与分享