题目描述 Description

科学家们最近发现了一种奇怪的生物,它们每天长大一岁,刚出生的宝宝为1岁,且它们的年龄没有上限。已知年龄为1岁,2岁,3岁,……,k岁的个体具有生育能力,当年龄为i的具有生育能力的个体将长大一岁时会生下ai个1岁的幼崽。假设第一天只有一个年龄为1的幼崽,现在科学家们想知道第x天年龄为y的个体有多少,但由于该物种增长速度太快,于是他们将这个任务交给了你。由于这个数可能很大,你需要对p取模。

输入描述 Input Description

输入数据第一行给定四个整数k,x,y,p。

第二行包括k个整数,第i个整数代表ai。

输出描述 Output Description

输出数据包含一行,表示第x天年龄为y的个体的数量对p取模后的结果。

样例输入 Sample Input

【样例输入 1】

3 3 1 1007

1 1 1

【样例输入 2】

3 6 2 1007

1 2 1

样例输出 Sample Output

【样例输出1】

2

【样例输出 2】

13

数据范围及提示 Data Size & Hint

题目来源

  CODEVS ROUND4 月赛

思路(官方解释)

  

题目要求我们求第x天年龄为y的个体数量,我们可以等价为求第x-y+1天1岁的个体数量。

暴力写法就是递推,我们从第一天开始算,一天一天往后推每个年龄的个体数量。

这里我们可以看到有一个不足之处,我们没有必要记录年龄大于k的个体数量,因为他们没有生育能力,不会影响后面,而且我们只要求x-y+1天的1岁的个体数量。

所以每一天我们都只要记录年龄为1到k的个体数量。

设F[i,j]为第i天年龄为j的个体数量,初始F[1,1]=1。

递推式为

F[i+1,1]=F[i,1]+F[i,2]+……+F[i,k]

F[i+1,j]=F[i,j-1](j>1)

对于这种递推方程式固定的递推,我们可以用矩阵快速幂来加速。

PS:如果不知道矩阵快速幂的话就看一看矩阵乘法怎么运算,然后利用矩阵乘法满足结合律,就可以用类似快速幂的方法来加速。

具体做法就是用一个1*k的矩阵乘以k*k的矩阵的x-y次方,最后得到一个1*k的矩阵,这个矩阵里面就是x-y+1天1到k岁的个体数量。

对于取模运算,因为我们操作的时候涉及到的运算只有加和乘,边做边取模就可以了。

时间复杂度O(k^3*log(x-y))

[codevs4247]奇特的生物的更多相关文章

  1. codevs4247奇特的生物 解析报告

    4247 奇特的生物 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 科学家们最近发现了一种奇怪的生物,它们每天长大一岁 ...

  2. 专访Facebook HipHop作者/阿里研究员赵海平:生物与计算机交织的独特人生

    3 月 26 日,杭州的天阴沉沉,这是一种山色空蒙雨亦奇的美丽,还是雾霭笼罩下的怪异,对于来访阿里巴巴西溪园区的人们来说,没人关心这些.人们行色匆匆,兴奋地往各自目的地奔赴而去.我也来不及细思这些,因 ...

  3. XCOM2中敌对生物设计分析(Aliens篇)

    Aliens Aliens作为游戏设定中入侵的外星人,有各式外貌及奇特的战斗方式,掌握一些高能科技或利用精神力量进行攻击 Sectoid 使用灵能战斗的外星人,并无高级版本,初级便会使用精神控制,生命 ...

  4. 你应该知道的10个奇特的 HTML5 单页网站

    网页设计师努力寻找新的方式来展现内容.其中一个大的趋势是单页网站,现在被世界上的一些大的品牌广泛采用,使用它们来为用户提供一个快速,干净和简单的而且​​美丽的网站. 下面是10个令人惊叹的单页 H​​ ...

  5. [Z] 北大一牛人生物转申CS的经历

    http://www.bdwm.net/bbs/bbscon.php?board=CIS&file=M.1367038121.A&num=626&attach=0&di ...

  6. tsql的奇特语法

    也许是离开t-sql太久了,突然发现很多t-sql的奇特语法 用一句sql解决多种排序: ; SELECT C1, C2 FROM T ORDER BY THEN C1 END ASC, THEN C ...

  7. 3D 生物打印血管成功植入恒河猴体内

    3D 生物打印血管成功植入恒河猴体内

  8. 一种奇特的DEDE隐藏后门办法

    转自:http://www.91ri.org/6462.html   一种奇特的DEDE隐藏后门办法 单位某站用的dedecms,今天被某黑阔getshell了,提交到了wooyun. 为了还原黑阔入 ...

  9. css奇特用法之 IMG添加背景图片配合显示--效果惊艳

    IMG标签本身是显示图片的,但通过CSS可以再为其设置背景图片,让其和自身的图片配合来显示,最终的效果会让你惊叹.当然,这个发现来自于老外,所以代码马上与大家分享.再此之前,我也从来没有想到过这个思路 ...

随机推荐

  1. sql server触发器的例子

    发布:thebaby   来源:脚本学堂     [大 中 小] 本文介绍下,在sql server数据库中使用触发器的简单例子,有需要的朋友可以参考下,希望对你有一定的帮助. 原文地址:http:/ ...

  2. about Q&A in installing linux[centos6,7]

    keywords:grub1,grub2,gnome,kde, question describe:install centos7 by U disk,出现问题, 解决办法: install cent ...

  3. Html学习_style属性应用

    用style属性改变字体大小.颜色.字体.背景颜色和对齐方式 <!DOCTYPE html> <html> <head> <title>Putting ...

  4. 使用Python编程语言连接MySQL数据库代码

    使用Python编程语言连接MySQL数据库代码,跟大家分享一下: 前几天我用python操作了mysql的数据库,发现非常的有趣,而且python操作mysql的方法非常的简单和快速,所以我把代码分 ...

  5. Java线程(转)

    1.Java线程的实现. 第一种方式可以通过继承Thread.在Thread类中,有许多关于线程操作的方法,比如:sleep();activeCount();等 继承Thread的代码: public ...

  6. c# 获取MP3和AMR文件格式的时长

    //网上摘录整理private long GetAMRFileDuration(string fileName) { ; FileStream fs = new FileStream(fileName ...

  7. 使用PyInstaller打包Python程序

    本文转载自: http://www.pycoding.com/2015/04/23/pyinstaller.html

  8. 使用Sass预定义一些常用的样式,非常方便(转)

    SS预处理技术现在已经非常成熟,比较流行的有Less,Sass,Stylus,在开发过程中提升我们的工作效率,缩短开发时间,方便管理和维护代码,可以根据自己的喜好选择一款自己喜欢的工具开发,使用很接近 ...

  9. xrange和range区别

    range和xrange这两个函数基本都是在循环的时候使用的. >>> for x in range(10,21,1): ... print x ... 10 11 12 13 14 ...

  10. sjtu1285 时晴时雨

    Description Taring 喜欢晴天,也喜欢雨天. Taring说:我想体验连续的\(K\)天的晴朗,去远足,去放歌:我还想再这\(K\)个晴天之后,再去体验连续的K天的云雨,去感受落雨时的 ...