母牛的故事(hdoj 2018,动态规划递推,详解)
有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?
Sample Input
2
4
5
0
Sample Output
2
4
6
//本代码为只输入一组数据的答案
//方法1:找规律找出来a[i]=a[i-1]+a[i-3] (ps:我第一次就是这样做出来的)
//方法2:归纳出状态转移方程
//现在解释一下为什么a[i] = a[i - 1] + a[i - 3]
//假如i-1年到i年每变化,则a[i] = a[i - 1]
//可是现在要考虑新的母牛和小牛,
//然后把目光放回i-3年.
//为什么是i-1年?
//i-1年有三种牛:第一种:母牛,,,第二种:这一年刚出生的小牛,,,
//第三种:这一年之前出生的小牛,但是这种牛到了i-3年还是小牛,
//那么毫无疑问,这种青年小牛会在第i年之前成长为母牛,可是
//在i-3到i年间假设青年小牛成长为母牛,那么母牛会马上生仔,但是仔在第i年时肯定也是仔
//所以说青年小牛的仔来不及变成母牛,那么i-3年时x个青年小牛
//到第i年时他会变成x个成年小牛,再带来新的x个幼年小牛
//如果i-3年时k个幼年小牛,到第i年时他会变成k个成年小牛,再带来k个幼年小牛
//(小牛刚成熟就可以马上带来新的!!!)
//而假如i-3年有m个母牛,那么第i年会带来m个幼年小牛
//所以如果i-3年时有x+k+m只牛
//i年时则会又多了x+k+m只小牛
//所以a[i]相对于a[i - 1]多了a[i - 3]只牛
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const ll maxn = ;
ll a[maxn] = {};
int main()
{
ll n;
scanf("%lld", &n); a[] = ; //第一年一头母牛
a[] = ;
a[] = ;
a[] = ;
a[] = ; //第二年出生的小牛在第五年变成了母牛,并且马上生出了一只小牛 for (ll i = ; i <= n; i++)
a[i] = a[i - ] + a[i - ];
printf("%lld", a[n]); }
母牛的故事(hdoj 2018,动态规划递推,详解)的更多相关文章
- 一只小蜜蜂(hdoj 2044,动态规划递推)
Problem Description 有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行.请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数.其中,蜂房的结构如下所示. Input 输入数据的第一行 ...
- 数塔(hdoj 2084,动态规划递推)
在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的: 有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少? 已经告诉你了,这是个DP的题目 ...
- 折线分割平面(hdoj 2050,动态规划递推)
Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目.比如,一条折线可以将平面分成两部分,两条折线最多可以将平面 ...
- HDOJ(HDU).2044-2049 递推专题
HDOJ(HDU).2044-2049 递推专题 点我挑战题目 HDU.2044 题意分析 先考虑递推关系:从1到第n个格子的时候由多少种走法? 如图,当n为下方格子的时候,由于只能向右走,所以有2中 ...
- 最长上升子序列(动态规划递推,LIS)
1759:最长上升子序列 题目: 总时间限制: 2000ms 内存限制: 65536kB 描述 一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的 ...
- 最大子段和(洛谷P1115,动态规划递推)
洛谷题目链接 题目赋值出来格式有问题,所以我就只放题目链接了 下面为ac代码 #include<bits/stdc++.h> #define ll long long using name ...
- 数的计数(noip2001,动态规划递推)
题目链接: 普通版: https://www.luogu.org/problemnew/show/P1028 数据加强版: https://www.luogu.org/problemnew/show/ ...
- P1759 通天之潜水(不详细,勿看)(动态规划递推,组合背包,洛谷)
题目链接:点击进入 题目分析: 简单的组合背包模板题,但是递推的同时要刷新这种情况使用了哪些物品 ac代码: #include<bits/stdc++.h> using namespace ...
- P2347 砝码称重(动态规划递推,背包,洛谷)
题目链接:P2347 砝码称重 参考题解:点击进入 纪念我第一道没理解题意的题 ''但不包括一个砝码也不用的情况'',这句话我看成了每个砝码起码放一个 然后就做不出来了 思路: 1.这题数据很小,10 ...
随机推荐
- hdoj--1716--排列2(暴力水题)
排列2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- bzoj 4337 树的同构
4337: BJOI2015 树的同构 Description 树是一种很常见的数据结构. 我们把N个点,N-1条边的连通无向图称为树. 若将某个点作为根,从根开始遍历,则其它的点都有一个前驱,这个树 ...
- Spark SVM分类器
package Spark_MLlib import java.util.Properties import org.apache.spark.mllib.regression.LabeledPoin ...
- ubuntu 14.04中: 像ubuntu16.04 一样可以在文件夹内打开此路径下的shell
sudo apt-get install nautilus-open-terminal 然后重启 ok!
- C#面向过程项目之飞行棋
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 飞行棋V ...
- Ueditor 单独使用上传图片及上传附件方法
1 <script type="text/plain" id="upload_ue"></script> 2 <script ty ...
- zabbix详细介绍及其自动动态发现
zabbix3.2.1 第1章 安装 1.1 查看系统环境 [root@centos7-2 ~]# [root@centos7-2 ~]# hostname -I 10.0.0.10 172.16.1 ...
- [Usaco2018 Feb]Snow Boots
Description 到冬天了,这意味着下雪了!从农舍到牛棚的路上有N块地砖,方便起见编号为1-N,第i块地砖上积了fi英尺的雪.在Farmer John的农舍的地窖中,总共有B双靴子,编号为1-B ...
- 2017杭电多校第七场1005Euler theorem
Euler theorem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 524288/524288 K (Java/Others) ...
- 转 DOS(CMD)下批处理换行问题/命令行参数换行 arg ms-dos
DOS(CMD)下批处理换行问题本人经常写一些DOS批处理文件,由于批处理中命令的参考较多且长,写在一行太不容易分辨,所以总想找个办法把一条命令分行来写,今天终于试成功两种方法.一.在CMD下,可以用 ...