原神启动(递推,矩阵)

这篇具有很好参考价值的文章主要介绍了原神启动(递推,矩阵)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Part 1. 引子

求有多少 1 ∼ n 1\sim n 1n的排列,满足:

  • 进行 k k k轮原神排序后变为升序

具体的,一轮原神排序的定义为:

  • 指针 i i i [ 1 , n ) [1,n) [1,n)的顺序正序遍历,如果 a i > a i + 1 a_i>a_{i+1} ai>ai+1,则交换 a i a_i ai a i + 1 a_{i+1} ai+1
  • 指针 i i i ( 1 , n ] (1,n] (1,n]的顺序逆序遍历,如果 a i − 1 > a i a_{i-1}>a_i ai1>ai,则交换 a i − 1 a_{i-1} ai1 a i a_{i} ai

1 ≤ n ≤ 1 0 18 , 0 ≤ k ≤ 1 0 5 1\le n\le 10^{18},0\le k\le 10^5 1n1018,0k105

Part 2

首先转化成对 01 01 01序列排序,发现每次操作等价于将最左边的 1 1 1和最右边的 0 0 0进行交换,然后转二分图匹配模型,设 f i , j f_{i,j} fi,j表示决策了前 i i i个左部点和右部点,左部点和右部点分别有 j j j个点未匹配的方案数。转移如下:

f i , j = { f i − 1 , j − 1 + ( 2 j + 1 ) f i − 1 , j + ( j + 1 ) 2 f i − 1 , j + 1 0 ≤ j ≤ k 0 j > k f_{i,j}=\begin{cases}f_{i-1,j-1}+(2j+1)f_{i-1,j}+(j+1)^2f_{i-1,j+1}&0\le j\le k\\0&j>k\end{cases} fi,j={fi1,j1+(2j+1)fi1,j+(j+1)2fi1,j+100jkj>k

可能你看不懂上面的递推式是怎么来的,这是本题的难点之一,但是我们先略过这一部分。

考虑写出转移矩阵 A A A,那么答案就是 A n v A^nv Anv。注意到转移可以写成 k + 1 k+1 k+1阶矩阵,有结论:对于向量 v v v的任意一维,存在相同 k + 1 k+1 k+1阶递推式。

证明:考虑找出矩阵 A A A的特征多项式 ∑ c i A i = 0 \sum c_iA^i=0 ciAi=0,记 j j j处的答案向量为 f j f_j fj,则:

∑ c i A i f j = 0 \sum c_iA^if_j=0 ciAifj=0

考虑向量的任意一维(比如说这道题要求的是 f n , 0 f_{n,0} fn,0),则:

∑ c i f j + i , 0 = 0 \sum c_if_{j+i,0}=0 cifj+i,0=0

这样我们自然而然的得到了线性递推式。

现在考虑求特征多项式,即 det ( λ I − A ) \text{det}(\lambda I-A) det(λIA)。注意到其只在主对角线和副对角线上有值,记 d n d_n dn表示对应 n n n阶行列式的答案,展开得到:

d n = ( x − 2 n − 1 ) d n − 1 + ( n − 1 ) 2 d n − 2 d_n=(x-2n-1)d_{n-1}+(n-1)^2d_{n-2} dn=(x2n1)dn1+(n1)2dn2

注意这不是常系数齐次线性递推,而是若干矩阵的乘积:

M i = [ 0 ( i − 1 ) 2 1 x − 2 i − 1 ] M_i=\begin{bmatrix}0&(i-1)^2\\1&x-2i-1\end{bmatrix} Mi=[01(i1)2x2i1]

现在要求 ∏ i = 1 k + 1 M i \prod_{i=1}^{k+1}M_i i=1k+1Mi,可以直接分治求,复杂度 O ( k log ⁡ 2 k ) O(k\log^2 k) O(klog2k)

最后用著名的 Bostan-Mori 算法求解常系数齐次线性递推的第 n n n项即可。

如果你不会这个

简单练习题:[ABC300Ex] Fibonacci: Revisited

总复杂度 O ( k log ⁡ k log ⁡ n + k log ⁡ 2 k ) O(k\log k\log n+k\log^2 k) O(klogklogn+klog2k)

代码:

//很抱歉这份代码咕掉了。只能期待Hagasei-Chan给出的std了。

Part 3

还有一个题的递推式大概是这样的:

f i , 0 = f i − a , 0 + f i − a , 2 + f i − a , 3 f i , 1 = f i − b , 1 + f i − b , 2 + f i − b , 3 f i , 2 = f i − c , 0 + f i − c , 1 + f i − c , 2 f i , 3 = f i − d , 0 + f i − d , 1 + f i − d , 3 f_{i,0}=f_{i-a,0}+f_{i-a,2}+f_{i-a,3}\\ f_{i,1}=f_{i-b,1}+f_{i-b,2}+f_{i-b,3}\\ f_{i,2}=f_{i-c,0}+f_{i-c,1}+f_{i-c,2}\\ f_{i,3}=f_{i-d,0}+f_{i-d,1}+f_{i-d,3} fi,0=fia,0+fia,2+fia,3fi,1=fib,1+fib,2+fib,3fi,2=fic,0+fic,1+fic,2fi,3=fid,0+fid,1+fid,3

现在要求 f n , 0 + f n , 1 + f n , 2 + f n , 3 f_{n,0}+f_{n,1}+f_{n,2}+f_{n,3} fn,0+fn,1+fn,2+fn,3

可以考虑写成生成函数的形式然后硬解方程,这样解出来应该是封闭形式,可以直接上 Bostan-Mori 。

但是其实这玩意也可以写成矩阵转移的形式,然后暴力展开行列式。因为有值的地方很少所以也是可行的。

Part 4

总结:我是属于连递推式都看不出来的那种

bot题谁做啊?bot题谁做啊?bot题谁做啊?bot题谁做啊?文章来源地址https://www.toymoban.com/news/detail-818652.html

到了这里,关于原神启动(递推,矩阵)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MATLAB polyfit函数——多项式拟合

        此函数用一个n次多项式来拟合一组数据点(x,y),并且将多项式系数以数组p的形式输出,p中的系数按降幂排列,数组长度为 n+1。     如果要将拟合好的多项式系数绘制出来,可以使用polyval函数:     此函数的作用是对给定的x1的值,通过多项式系数数组p计算对应的y1值

    2024年02月16日
    浏览(32)
  • 无涯教程-分类算法 - 多项式逻辑回归模型函数

    Logistic逻辑回归的另一种有用形式是多项式Lo​​gistic回归,其中目标或因变量可以具有3种或更多可能的 unordered 类型,即没有定量意义的类型。 现在,无涯教程将在Python中实现上述多项式逻辑回归的概念。为此,使用来自sklearn的名为 digit 的数据集。 首先,需要导入必要的

    2024年02月10日
    浏览(26)
  • Python做曲线拟合(一元多项式拟合及任意函数拟合)

    目录 1. 一元多项式拟合 使用方法 np.polyfit(x, y, deg) 2. 任意函数拟合 使用 curve_fit() 方法 实例: (1)初始化 x 和 y 数据集 (2)建立自定义函数 (3)使用自定义的函数生成拟合函数绘图  polyfig 使用的是最小二乘法,用于拟合一元多项式函数。 参数说明: x 就是x坐标,

    2024年02月02日
    浏览(38)
  • 第8章 特征矩阵(矩阵相似、最小多项式、特征矩阵相似、不变因子、初等因子和若当标准型)

    相似有相同的特征多项式,相同的特征值,相同的迹,A的行列式即det(A)也相同,相同的最小多项式,相同的秩。 从而求A的迹(特征值)转化为另一个矩阵的迹(特征值)。 例: (1)AB都正定,则tr(AB) 0,A正定,则有可逆阵P: 由于B正定,所以特征值都大于0,所以AB的迹大于

    2024年02月05日
    浏览(50)
  • 在嵌入式设备中用多项式快速计算三角函数和方根

    惯性传感器的倾角计算要用到三角函数. 在 MCS-51, Cortex M0, M3 之类的芯片上编程时, 能使用的资源是非常有限, 通常只有两位数KB的Flash, 个位数KB的RAM. 如果要使用三角函数和开方就要引入 math.h, 会消耗掉10KB以上的Flash空间. 在很多情况下受硬件资源限制无法使用 math.h, 这时候使

    2024年03月09日
    浏览(70)
  • 原神启动(递推,矩阵)

    Part 1. 引子 求有多少 1 ∼ n 1sim n 1 ∼ n 的排列,满足: 进行 k k k 轮原神排序后变为升序 具体的,一轮原神排序的定义为: 指针 i i i 按 [ 1 , n ) [1,n) [ 1 , n ) 的顺序 正序 遍历,如果 a i a i + 1 a_ia_{i+1} a i ​ a i + 1 ​ ,则交换 a i a_i a i ​ 和 a i + 1 a_{i+1} a i + 1 ​ 指针 i i i 按

    2024年01月23日
    浏览(31)
  • numpy 多项式函数回归与插值拟合模型;ARIMA时间序列模型拟合

    参考: https://blog.csdn.net/mao_hui_fei/article/details/103821601 1、多项式函数回归拟合 x ^3+ x ^2… 2、多项式函数插值拟合 对于插值函数 interp1d(phone_time, phone_x, kind=‘cubic’),无法直接获取多项式的参数与具体函数表达式。这是因为该函数使用样条插值方法,它的内部实现是基于一组数

    2024年02月16日
    浏览(41)
  • 曲线生成 | 基于多项式插值的轨迹规划(附ROS C++/Python/Matlab仿真)

    🔥附C++/Python/Matlab全套代码🔥课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。 🚀详情:图解自动驾驶中的运动规划(Motion Planning),附几十种规划算法 多项式插值(polynomial

    2024年02月03日
    浏览(27)
  • AA@有理系数多项式@整系数多项式@本原多项式@有理多项式可约问题

    有理数域上一元多项式的因式分解. 作为 因式分解定理 的一个特殊情形,我们有结论: 每个次数大等于1的 有理系数多项式 都能 唯一地 分解成 不可约的有理系数多项式 的乘积. 有理数域版本中,从一般数域具体到了\\\" 有理系数 \\\" 我们讨论多项式的时候,都假设多项式是在某个数

    2024年02月16日
    浏览(38)
  • 用链表表示多项式,并实现多项式的加法运算

    输入格式: 输入在第一行给出第一个多项式POLYA的系数和指数,并以0,0 结束第一个多项式的输入;在第二行出第一个多项式POLYB的系数和指数,并以0,0 结束第一个多项式的输入。 输出格式: 对每一组输入,在一行中输出POLYA+POLYB和多项式的系数和指数。 输入样例: 输出样例: 本

    2024年02月07日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包