中国(北方)大学生程序设计训练赛(第一周)E. water problem

本文主要是介绍中国(北方)大学生程序设计训练赛(第一周)E. water problem,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

函数 f:Z+Zf:Z+→Z。已知 f(1)f(2)f(1),f(2) 的值,且对于任意 x>1x>1,有 f(x+1)=f(x)+f(x1)+sin(πx2)f(x+1)=f(x)+f(x−1)+sin⁡(πx2)

求 f(n)f(n的值

多组数据。(数据组数 T100T≤100

每组数据包含 33 个不超过 109109 的正整数,分别代表 f(1)f(2)f(1),f(2) 和 nn 的值。

输出  f(n)mod(109+7)f(n)mod(109+7) 。每组输出末尾有换行符。


题意:

题目类似斐波那契数列,但比斐波那契数列多了一项。

思路:

首先回忆斐波那契数列的计算方法:

一、递归

直接按照递推公式递归运算,此方法有大量重复计算,导致n趋近不足100就无法在有限时间内计算出来,通常作为递归讲解的例子。

二、动态规划(dp)

为了避免重复计算,我们通常用一个数组记录已经计算的值,采用记忆化搜索的动态规划,就可以减少重复计算。

根据dp[n] = dp[n-1] + dp[n-2] 从第三项开始迭代即可。

此方法的时间复杂度为O(n),线性时间复杂度,考虑在1s内,无法计算大于1e8的数据范围。

三、矩阵快速幂

数列的递推公式为:f(1)=1,f(2)=2,f(n)=f(n-1)+f(n-2)(n>=3)

   用矩阵表示为:

  进一步,可以得出直接推导公式:

所以,对矩阵[1,1,1,0]进行n-2次幂运算,就可以计算出f(n)的值,此时由于幂运算可以使用快速幂运算,可以用矩阵快速幂来进行计算。

此时的时间复杂度为O(logN)

对比斐波那契数列,将其推广

由于本题中的递推关系非线性,即有sin项的约束,f(x+1)=f(x)+f(x1)+sin(πx2)f(x+1)=f(x)+f(x−1)+sin⁡(πx2)。我们展开两项,得到f(x) = f(x-1) + f(x-3) + f(x-4),通过sin的周期性,消去了常数项。

得到了一个四阶线性递推公式。

类比斐波那契数列的方法,我们需要找一个转移矩阵,满足上述矩阵运算。

由于斐波那契数列是二阶递推数列,所以存在一个2*2的矩阵A,使得:

[Fn Fn-1] = [Fn-1 Fn-2] * A      

所以以上的四阶递推公式也一定存在一个4*4的矩阵A,满足

[Fn Fn-1 Fn-2 … Fn-k+1] = A*[Fn-1 Fn-2 Fn-3 … Fn-k]

                                          = …

                                          = An-k+1 *[Fk-1 Fk-2 Fk-3 … F0   

这里的k=5;

根据以上地推关系,拼凑出矩阵A(转移矩阵) 为[1 0 1 1,1 0 0 0,0 1 0 0,0 0 1 0]

在计算矩阵的幂时,首先我们定义矩阵乘法的运算法则(矩阵乘法公式),然后对指数进行快速幂处理,通过减少乘法次数,化时间为对数量级。


这篇关于中国(北方)大学生程序设计训练赛(第一周)E. water problem的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/881620

相关文章

Javascript高级程序设计(第四版)--学习记录之变量、内存

原始值与引用值 原始值:简单的数据即基础数据类型,按值访问。 引用值:由多个值构成的对象即复杂数据类型,按引用访问。 动态属性 对于引用值而言,可以随时添加、修改和删除其属性和方法。 let person = new Object();person.name = 'Jason';person.age = 42;console.log(person.name,person.age);//'J

创新、引领、发展——SAMPE中国2024年会在京盛大开幕

绿树阴浓夏日长,在这个色彩缤纷的季节,SAMPE中国2024年会暨第十九届国际先进复合材料制品原材料、工装及工程应用展览会在中国国际展览中心(北京朝阳馆)隆重开幕。新老朋友共聚一堂,把酒话桑麻。 为期4天的国际学术会议以“先进复合材料,引领产业创新与可持续化发展”为主题,设立了34个主题分会场,其中包括了可持续化会场、国际大学生会场、中法复合材料制造技术峰会三个国际会场和女科技工作者委员会沙龙,

中国341城市生态系统服务价值数据集(2000-2020年)

生态系统服务反映了人类直接或者间接从自然生态系统中获得的各种惠益,对支撑和维持人类生存和福祉起着重要基础作用。目前针对全国城市尺度的生态系统服务价值的长期评估还相对较少。我们在Xie等(2017)的静态生态系统服务当量因子表基础上,选取净初级生产力,降水量,生物迁移阻力,土壤侵蚀度和道路密度五个变量,对生态系统供给服务、调节服务、支持服务和文化服务共4大类和11小类的当量因子进行了时空调整,计算了

大学生自救数据结构与算法(py实现)——01递归

目录 目录 递归 基本概念 工作原理 基本要素 优点 缺点 实现技巧 实例解析:计算阶乘 斐波那契数列 高效的斐波那契数列 python中的最大递归深度 二分查找 基本原理 性能分析 优化与变体 线性递归  元素序列的递归求和 二路递归 二路递归的基本概念 典型应用 工作原理 多重递归  示例:计算卡特兰数(Catalan Number) 尾递

MapReduce程序设计2

要求 1、数据集stock-daily,包含A股近4000只股票的今年以来的日数据;数据集stock-daily-30d仅包含最近30个交易日数据,根据自己计算机性能选择。 数据来源:https://www.joinquant.com/help/api/help?name=JQData 2、数据集stock-concept,包含A股近4000只股票所有的股票代码、名称和概念。 数据来源:万

预备资金有5000-6000买什么电脑比较好?大学生电脑选购指南

小新pro14 2024 处理器:采用了英特尔酷睿Ultra5 125H或Ultra9 185H两种处理器可选,这是英特尔最新的高性能低功耗处理器,具有18个线程,最高可达4.5GHz的加速频率,支持PCIe 4.0接口,内置了强大的ARC核芯显卡,性能超过GTX 1650独显。此外,酷睿Ultra系列还增加了SOC模块和NPU模块,分别用于提升省电效率和AI能力。 屏幕:提供了LCD和OLE

【华东南AWDP】第十七届全国大学生信息安全竞赛 CISCN 2024 创新实践能力赛区域赛 部分题解WP

前言:这次区域赛AWDP安恒作为支持,赛制风格遵循安恒,一小时check一次。室温35°在室内坐了8小时,午饭是藿香正气水拌冰水。这场总体下来中规中矩吧。 WEB-welcome-BREAK Ctrl+U拿到flag WEB-submit-BREAK 文件上传,简单绕过 绕过就两个,一个MIMA头,一个等号换php(短标签) WEB-submit-FIX 修两个点,一个是

「学转录组入门生信」第一周从环境配置开始

image 我们第一周目标有三个: 熟悉Linux环境 登录服务器Linux基本命令PATH的意义学习conda管理环境 如何在conda中添加channel如何用conda安装和卸载软件如何创建新的环境和切换环境数据准备 首先,你需要有一个Linux环境,Windows10用户可以安装WSL,MacOS请在应用程序中搜索终端 Windows10配置WSL: https

中国港口年鉴(2000-2023年)

数据年限:2000-2023(齐全) 数据格式:pdf、excel 数据内容: 一、记述和反映了中国大陆江、海、河港口在深化改革、调整结构、整合资源、开拓经营、加快建设等方面所取得的成就和发展进程,香港特别行政区、澳门特别行政区、台湾地区港口发展的概况专门列述。 二、本版以每个省(自治区、直辖市)为单位,编排省内各港情况,并在一城一港的基础上编排各市港口情况,然后在各市港口下再列入大型港口企业集团

如何占领消费者科技心智?这家中国企业给出标准答案

品牌的价值是什么? 沃伦·巴菲特和查理·芒格曾提出过著名的“护城河”模型,将品牌作为一家公司构建护城河的基本要素之一。 按照巴菲特的说法:“你会试着去创建一个跟迪士尼竞争的品牌吗?可口可乐这个品牌让人联想到世界各地畅饮可口可乐的不同人。这就是你希望一家企业能够拥有的,这就是护城河。” 原因在于,品牌常常和消费者的忠诚度、企业的影响力、产品的定价能力挂钩。如果说技术、产品和渠道构成了一家企业的