【题目链接】

ybt 1312:【例3.4】昆虫繁殖
附加条件:该题结果可以由long long类型表示

【题目解析】

该题“每对成虫过x个月产y对卵”这句有误,实际应该为“每对成虫过x个月每个月产y对卵”,一本通书第五版P215这道题就是这样写的。OJ抄录时少了“每个月”三个字,导致理解困难。这句话描述为:

【题目考点】

1. 递推

【解题思路】

首先要理解题意
该题中指说的虫无论是题目还是结果,都是以“对”为单位的,不涉及“一对是两个”这种换算。
我们认为将虫子分为三种形态:卵,幼虫(不能产卵),成虫(可以产卵)
题目中每对卵要过2个月长成成虫,每对成虫过x个月每个月产y对卵这句话应该这样理解:

假设这句话中x为3,y为1,我们可以假定有以下具体场景
一对成虫在1月初产了一对卵,这对卵过2个月,在3月初变为一对幼虫,再过3个月(也就是x个月),在6月初变为一对成虫,这对成虫在6月初产了一对卵。
这对新的卵过了2个月在8月初变为幼虫,在11月初变为成虫,并产卵。

我们把不能产卵的虫称为幼虫,这样更方便理解。

设数组a与b,a[i]表示第i个月有多少对虫,b[i]表示第i个月出生的卵的数量。

  • 现在初始状态下只有一对刚刚从卵变成的幼虫,要在x个月之后才能开始第一次产卵。

假设x是3,写出具体例子理解一下:
1月初有一对刚刚从卵变成的幼虫,3个月(也就是x个月后)在4月初这对幼虫变为成虫,并产卵。

幼虫在x个月后,也就是第x+1月才能开始产卵。那么前x个月只有一对虫,对所有i满足1≤i≤x1\le i\le x1≤i≤x,有a[i]=1,b[i]=0

  • 类比兔子繁殖(斐波那契数列)问题中:当月的成年兔子可以分为上个月就已经是成年的兔子,和这个月刚刚成年的兔子。
    考虑某个月的虫,可以分为上个月就已经有的虫(成虫或幼虫),和这个月刚刚从卵变成的幼虫
    第i个月的上个月的虫子数量为a[i-1]
    假设虫卵在第m月出生,那么这些卵会在第m+2月变为幼虫。反过来想,第i个月的刚刚从卵变成的幼虫,实际是第i-2月出生的虫卵。第i-2月出生的虫卵数量为b[i-2],所以这部分幼虫的数量为b[i-2]
    因而有a[i] = a[i-1] + b[i-2];
  • 假设第m月卵变为幼虫,那么第m+x月幼虫变为成虫。反过来想:第i月的成虫,最晚是在第i-x月从卵变为幼虫。第i-x月后再从卵变成的幼虫,在第i月必然是幼虫,不是成虫。。
    第i-x月的成虫在第i月当然还是成虫,第i-x月的幼虫在第i月夜变成了成虫,第i个月的虫也不可能来自第i-x月之后变成的幼虫。因此第i个月的成虫就是第i-x月的成虫加幼虫,即第i-x月的总虫数量a[i-x]
    第i个月的产卵数量b[i],为第i个月的成虫数量乘以y,即b[i] = a[i-x]*y
    题目从第1个月开始,求z个月后的虫子数量,即为求a[z+1]
  • 考虑结果可能的大小。假设x为1,y为20,a的递推式为ai=ai−1+20⋅ai−3>20∗ai−3a_i = a_{i-1}+20\cdot a_{i-3} > 20*a_{i-3}ai​=ai−1​+20⋅ai−3​>20∗ai−3​,那么当z为50时,求a[z+1]为a51>20⋅a48>202⋅a45>...>2016⋅a3=2016a_{51} > 20\cdot a_{48} > 20^2\cdot a_{45}>...>20^{16}\cdot a_{3} = 20^{16}a51​>20⋅a48​>202⋅a45​>...>2016⋅a3​=2016,求这个数字的位数:⌊2016⌋+1≈23\lfloor 20^{16} \rfloor + 1\approx 23⌊2016⌋+1≈23。无法用int或long long类型表示。
    实际上确实如此,如果输入数据为 1 20 50,将a与b的类型设为double,会得到结果约为1.38∗10241.38*10^{24}1.38∗1024,和我们的估算是一致的。
  • 只能说该题不够严谨,输入变量范围给定的不够准确。该题实际上如果将a与b的类型设为long long,是可以过的。

【题解代码】

解法1:递推

#include<bits/stdc++.h>
using namespace std;
int main()
{long long a[101], b[101];//a[i]:第i个月有多少对虫  b[i]:第i个月出生的卵的数量 int x, y, z;cin >> x >> y >> z;for(int i = 1; i <= x; i++)//前x个月只有第一对幼年虫 {a[i] = 1;b[i] = 0;}for(int i = x + 1; i <= z + 1; i++)//求第z个月后,即第z+1个月 {b[i] = a[i-x]*y; a[i] = a[i-1]+b[i-2];}cout << a[z+1] << endl;return 0;
}

信息学奥赛一本通 1312:【例3.4】昆虫繁殖相关推荐

  1. 【例1】 0/1背包《信息学奥赛一本通》【解法一】 02

    /* [例1] 0/1背包<信息学奥赛一本通>[解法一] 02 http://ybt.ssoier.cn:8088/problem_show.php?pid=1267 */ #includ ...

  2. 【例8】合唱队形(《信息学奥赛一本通第五版》)

    /* [例8]合唱队形(<信息学奥赛一本通第五版>) http://ybt.ssoier.cn:8088/problem_show.php?pid=1264 [问题描述] N位同学站成一排 ...

  3. 信息学奥赛一本通 2021:【例4.6】最大公约数

    [题目链接] ybt 2021:[例4.6]最大公约数 [题目考点] 1. while循环 2. 求最大公约数 辗转相减法 辗转相除法 [解题思路] 解法1:枚举 取较小数字,从该数字的值开始从大到小 ...

  4. 信息学奥赛一本通(2032:【例4.18】分解质因数)

    2032:[例4.18]分解质因数 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 582     通过数: 376 [题目描述] 把一个合数分解成若干个质因数乘积 ...

  5. 信息学奥赛一本通——2062:【例1.3】电影票

    2062:[例1.3]电影票 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 57341     通过数: 34230 [题目描述] 已知一位小朋友的电影票价是10 ...

  6. 信息学奥赛一本通 1278:【例9.22】复制书稿(book) | 洛谷 P1281 书的复制

    [题目链接] ybt 1278:[例9.22]复制书稿(book) 洛谷 P1281 书的复制 [题目考点] 1. 动态规划:线性动规 [解题思路] 该题可以抽象为:将由m个数字构成的序列分成k个子段 ...

  7. 信息学奥赛一本通1267:【例9.11】01背包问题(二维dp与滚动数组优化)

    [题目描述] 一个旅行者有一个最多能装 MM 公斤的背包,现在有 nn 件物品,它们的重量分别是W1,W2,...,WnW1,W2,...,Wn,它们的价值分别为C1,C2,...,CnC1,C2,. ...

  8. 信息学奥赛一本通C++语言-----2036:【例5.3】开关门

    [题目描述] 宾馆里有n(2≤n≤1000)n(2≤n≤1000) 个房间,从1∼n1∼n 编了号.第一个服务员把所有的房间门都打开了,第二个服务员把所有编号是22 的倍数的房间"相反处理& ...

  9. 信息学奥赛一本通——2068:【例2.6】鸡兔同笼

    大家好(๑╹◡╹)ノ" 这里是小蒟蒻 一天没更新了呢! 今天给大家带来<信息学奥赛一本通--2068:[例2.6]鸡兔同笼> 题目: 2068:[例2.6]鸡兔同笼 时间限制: ...

最新文章

  1. 北航计算机软件基础试题,北航2010计算机软件技术基础试题与答案.pdf
  2. matlab创建图形用户界面,Matlab 用户图形界面 基础 (一)
  3. linux进程--fork详解(三)
  4. hpunix下11gRac的安装
  5. 拖拽批量上传图片如何保证 顺序_新手指南︱shopee店铺上架产品该如何操作?...
  6. 【二十二】win 10 :Jmeter 报告可视化 —— 配置 Jmeter 接口 HTML 可视化测试报告,Jenkins + Jmeter + Ant 自动化集成环境搭建
  7. Pytorch数据的读取与存储
  8. python简单代码-Python中几个非常神奇的代码的简洁,方便,高效!
  9. 使用Word文档生成.prn文件
  10. 虚拟文件系统(Virtual File System,VFS)
  11. muduo 异步日志实现
  12. 计算机网路vlan划分练习
  13. SQL分组排序再取前N条记录
  14. 微信OAuth2.0网页受权php
  15. 以太坊parity2.72节点客户端部署安装
  16. Arduino基础项目十三:通过开关控制风扇
  17. 【MAX7800实现KWS20 demo演示】
  18. 谷歌seo优化主要做什么?
  19. 2021直播电商下半场,“网易严选们”为何成主播良港?
  20. Camera ITS测试

热门文章

  1. JavaScript对象中的this属性
  2. Commons net实现 FTP上传下载
  3. 知乎高赞:有哪些你看了以后大呼过瘾的数据分析书?
  4. 一文看懂数据挖掘:哪一种方法最好?都需要哪些技术?
  5. 最暖数据: 除夕有6.88亿人用微信红包传递狗年祝福
  6. STM32 system_stm32f10x.c文件分析
  7. 半波对称振子方向图_第一讲 天线的方向图(下).pdf
  8. crystal ball 软件_推荐10个堪称神器的软件工具
  9. 那天删库跑路后,在牢里写的MySQL数据恢复大法……
  10. JVM:我就想知道我是怎么没的