2021 CSP-S 初赛知识补天

本文探讨了在算法竞赛中,如何利用特征方程解决二项递推问题,通过实例展示了求解过程。同时,介绍了飞行棋问题的期望计算,阐述了如何用期望dp解决这类问题,并以硬币掷出次数的期望为例进行说明。此外,还提及了复杂度递推计算,利用递归树找到规律求解算法的时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面的话

近几年的初赛,尤其是题型变成选择后,对计算机基础知识的要求不那么高,反而对程序理解、数学知识之类的东西是愈加重视。所以,我在这两方面选取了几类不是那么好做的题型,分享做法。


特征方程

这种题目通常是给出二项递推式,形如 cf(n)=af(n−1)+bf(n−2)cf(n)=af(n-1)+bf(n-2)cf(n)=af(n1)+bf(n2),然后让你写出,在 nnn 不断增大的过程中,f(n)f(n)f(n) 趋近于多少。

我以前的做法是强算到 f(7)f(7)f(7) 左右,然后选一个最接近的答案。但是这样不仅耗时,而且正确性也不保证。

接下来介绍一种特征方程的解法。

你不需要知道原理,只要知道怎么用就行了。——Rayleigh666

其步骤如下:

  1. 将原式移项得到:cf(n)−af(n−1)−bf(n−2)=0cf(n)-af(n-1)-bf(n-2)=0cf(n)af(n1)bf(n2)=0
  2. 我们把 f(n)=x2,f(n−1)=x,f(n−2)=1f(n)=x^2,f(n-1)=x,f(n-2)=1f(n)=x2,f(n1)=x,f(n2)=1 带入得到 cx2−ax−b=0cx^2-ax-b=0cx2axb=0
  3. 设这个一元二次方程的解为 x1,x2x_1,x_2x1,x2,则有 f(n)=Ax1n−1+Bx2n−1f(n)=Ax_1^{n-1}+Bx_2^{n-1}f(n)=Ax1n1+Bx2n1
  4. 然后我们把初始已知的两个 f(n)f(n)f(n) 带入可求得 A,BA,BA,B 的值;
  5. 然后可以得出 f(n)f(n)f(n) 的通项式,从而将无穷大带入可以得到答案。

接下来我们举个例子。

已知 f(1)=1,f(2)=56,3f(n+1)=5f(n)−2f(n−1)f(1)=1,f(2)=\dfrac{5}{6},3f(n+1)=5f(n)-2f(n-1)f(1)=1,f(2)=65,3f(n+1)=5f(n)2f(n1),当 nnn 增大时,f(n)f(n)f(

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值