2021 CSP-S 初赛知识补天

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

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

前面的话

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


特征方程

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

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

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

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

其步骤如下:

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

接下来我们举个例子。

已知 f ( 1 ) = 1 , f ( 2 ) = 5 6 , 3 f ( n + 1 ) = 5 f ( n ) − 2 f ( 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(n

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值