
分析:其实很容易想到的就是设f[i]表示跳到坐标为i的位置时所踩到的最少石子数,那么显然有
f[i]=min(f[i-T~i-S])+vis[i],其中vis[i]标记坐标为i的位置是否有石子,但是当我们读完数据范围后发现这样是不行的,因为数据范围是1e9,显然会超时,但是发现石子数量不是很多,所以这个时候我们就需要从石子之间的距离这个角度来对本道题目来进行优化了。
假设我们每次可以走s~t步,如果s==t,那么我们只有一种走的方式,那么这样答案就很容易求出来,现在我们来分析一下s!=t的情况,那么我们每步可以走s步也可以走s+1,步,那么对于任意的w>=(s+1)*s,我们都可以通过每次走s或s+1步来到达,这个是由裴蜀定理推论得到的。
先来说一下裴蜀定理:对于任意的x和y都能够找到a和b使得a*x+b*y=gcd(x,y)成立
那么一定有k*a*x+k*b*y=k*gcd(x,y)成立
由于s和s+1互质(任意相邻两个数均互质),一定有a*s+b*(s+1)=w(w>=s*(s+1))成立,现在的问题就是我们能不能找到正整数解满足这个等式我们假设0<=a<=s,那么b=(w-a*s)/(s+1)>=0,所以一定存在正整数a和b满足上面方程,那也就是说任

本文介绍了如何使用裴蜀定理优化动态规划算法,解决在大量数据下过河问题,通过减少计算次数避免超时。文章详细分析了当步长为s和s+1时,如何确保能到达所有位置,并提供了C++代码实现。
最低0.47元/天 解锁文章
203

被折叠的 条评论
为什么被折叠?



