• BZOJ 3231 Sdoi2008 递归数列


    3231: [Sdoi2008]递归数列
    
    Time Limit: 1 Sec  Memory Limit: 256 MB
    Submit: 841  Solved: 378
    [Submit][Status][Discuss]
    Description
    
    一个由自然数组成的数列按下式定义:
    对于i <= k:ai = bi
    对于i > k: ai = c1ai-1 + c2ai-2 + ... + ckai-k
    其中bj和 cj (1<=j<=k)是给定的自然数。写一个程序,给定自然数m <= n, 计算am + am+1 + am+2 + ... + an, 并输出它除以给定自然数p的余数的值。
    Input
    
    由四行组成。
    第一行是一个自然数k。
    第二行包含k个自然数b1, b2,...,bk。
    第三行包含k个自然数c1, c2,...,ck。
    第四行包含三个自然数m, n, p。
    Output
    
    仅包含一行:一个正整数,表示(am + am+1 + am+2 + ... + an) mod p的值。
    Sample Input
    
    2
    
    1 1
    
    1 1
    
    2 10 1000003
    
    Sample Output
    
    142
    HINT
    
    
    
    对于100%的测试数据:
    
    1<= k<=15
    
    1 <= m <= n <= 1018
    题目

    不要看错了,最后一点是10的18次方,不是1018

    被坑了,QAQ

    没看错题应该就没有什么问题了吧,矩乘求一下前n项的和

    最后输出sum[n]-sum[m-1]即可

    矩阵的构造

    ans答案矩阵

    【sum,f[n-1],f[n-2],f[n-3]........f[n-k]】

     转移矩阵

    1   c[1]   c[2]    c[3]  ..... c[k-1]      c[k]

    0   c[1]   c[2]    c[3]  ..... c[k-1]   c[k]

    0    1      0      0      0  .......  0     0

    0    0      1      0      0  .......  0     0

    0    0      0      1      0  .......  0     0

    0    0      0      0      1   ......  0     0

    0    0      0      0      0     1....0     0

    0    0      0      0      0     0    1    0

    这个矩阵的长和宽都是k+1

    所以最终的复杂度为O((k+1)^3*(longn+logm))

  • 相关阅读:
    Python学习之列表
    Python学习笔记
    Linux基础命令总结
    CentOS6.6安装mysql-5.7.25二进制安装包简易教程
    执行 cobbler get-loaders报错
    windows下 Qt 安装 taglib 获取媒体信息windows
    Qt dropEvent和dragEnterEvent问题
    Qt---去掉标题栏后,最大化应用程序窗口时,窗口遮住了任务栏的问题
    Qt 单击任务栏图标实现最小化
    Qt 无边框窗口的两种实现
  • 原文地址:https://www.cnblogs.com/something-for-nothing/p/7856874.html
Copyright © 2020-2023  润新知