看起来就像一个加权的斐波那契数列变形!(这个权是倒序加的,没仔细读题正着构造了矩阵,卡着30分百思不得其解qwq,现在看来应该是k=1的30分)

构造一个矩阵,就可以很方便地求出第n项,但是它要求一段区间和,就在矩阵上加一个前缀和,维护起来非常方便

转移矩阵前n-1列用来继承上次2~n列的状态,第n列用来加权转移第n+1项,第n+1列和第n列转移基本相同,多一个继承前缀和。

#include<iostream>
#include<cstring>
#include<cstdio>
#define int long long
using namespace std;inline int rd(){int ret=0,f=1;char c;while(c=getchar(),!isdigit(c))f=c=='-'?-1:1;while(isdigit(c))ret=ret*10+c-'0',c=getchar();return ret*f;
}int num,n,m,mod;inline int M(int x){while(x<0ll) x+=mod;return x%mod;
}const int MAXN=64;typedef long long ll;struct Mat{int a[MAXN][MAXN];Mat(){memset(a,0,sizeof(a));}Mat operator*(const Mat &rhs){Mat ret;for(int k=1;k<=num+1;k++){for(int i=1;i<=num+1;i++){for(int j=1;j<=num+1;j++){(ret.a[i][j]+=(1ll*a[i][k]*rhs.a[k][j])%mod)%=mod;}}}return ret;}
}e;void show(Mat x){cout<<"===============================\n";for(int i=1;i<=num+1;i++){for(int j=1;j<=num+1;j++){cout<<x.a[i][j]<<" ";}cout<<endl;}cout<<"===============================\n";
}Mat pow(Mat x,ll y){Mat ret(e),base(x);while(y){if(y&1) ret=ret*base;base=base*base;y>>=1ll;}return ret;
}int B[MAXN],C[MAXN];void init(){for(int i=1;i<=num+1;i++){e.a[i][i]=1;}
}void solve(){Mat ori;int s=0ll;for(int i=1;i<=num;i++){ori.a[1][i]=B[i]%mod;s+=B[i];s%=mod;}ori.a[1][num+1]=s;Mat tra;for(int i=1;i<num;i++) tra.a[i+1][i]=1ll;for(int i=1;i<=num;i++) tra.a[i][num]=tra.a[i][num+1]=C[num-i+1];//!!tra.a[num+1][num+1]=1ll;Mat res=pow(tra,n-num);Mat ansn=ori*res,ansm;ll ans=ansn.a[1][num+1];if(m>num){res=pow(tra,m-num-1);ansm=ori*res;ans=M(ans-ansm.a[1][num+1]);printf("%lld\n",ans);}else{for(int i=1;i<m;i++) ans=M(ans-B[i]);printf("%lld\n",ans);}
}signed main(){num=rd();for(int i=1;i<=num;i++) B[i]=rd();for(int i=1;i<=num;i++) C[i]=rd();m=rd();n=rd();mod=rd();ll tmp=0;if(n<=num){for(int i=m;i<=n;i++) (tmp+=B[i])%=mod;//
        printf("%lld\n",tmp);return 0;}init();solve();return 0;
}

转载于:https://www.cnblogs.com/ghostcai/p/9376133.html

[BZOJ] 3231: [Sdoi2008]递归数列相关推荐

  1. BZOJ 3231: [Sdoi2008]递归数列 (JZYZOJ 1353) 矩阵快速幂

    http://www.lydsy.com/JudgeOnline/problem.php?id=3231 和斐波那契一个道理在最后加一个求和即可 1 #include<cstdio> 2 ...

  2. BZOJ:3231: [Sdoi2008]递归数列

    题解: 矩阵乘法,在矩阵中构造当前前缀和: 注意:for(int/long long ;;); #include<iostream> #include<cstdio> #inc ...

  3. [BZOJ3231] [Sdoi2008]递归数列

    [BZOJ3231] [Sdoi2008]递归数列 题目大意 给定Ci,i∈[1,k]给定C_i,i\in[1,k] 定义 若i>k,Ai=Ai−1∗C1+Ai−2∗C2+⋯+Ai−k∗Ck若i ...

  4. bzoj3231 [SDOI2008]递归数列 矩乘

    标准的矩乘模型,标准的数据范围 注意构造矩阵的时候使用倍增转移法,这样清晰得多 注: 由于我的写法问题,前缀和算到n-1,所以要n++,而<k的部分与后面前缀和的运算无关,所以还要再减回来 码: ...

  5. review 9.29 viv 逃命 递归数列

    T1 逃命 survive Time Limit: 1 Sec  Memory Limit: 32768 K Description 糟糕的事情发生啦,现在大家都忙着逃命.但是逃命的通道很窄,大家只能 ...

  6. C语言-函数-递归数列

    题目:递归数列 类别 函数与递归 程序类型: 代码片段 时间限制: 2S 内存限制 10000Kb 问题描述 一个数列A定义如下 A(1)=1, A(2)=1/(1+A(1)), A(3)=1/(1+ ...

  7. 递归数列(recursive sequence)

    递归数列-递归数列 (recursive sequence ):一种用归纳方法给定的数列. 递归数列-举例 例如,等比数列可以用归纳方法来定义,先定义第一项 a1 的值( a1 ≠ 0 ),对 于以后 ...

  8. 剑指offer | 递归数列

    在这里整理一下递归数列的简单运用. 首先,写写用到的斐波那契数列 0 1 1 2 3 5 8 - 题目1:大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项. 这是一个很正常 ...

  9. 冷月虐哭数一之高等数学(1)-递归数列极限的求法和证明

    本文目录 前言 方法论 例题 总结 前言 高等数学是理工科考研都需要考的科目之一,不管是数一.数二.数三都是考纲中的内容.而极限又是高数中的基础,是微分学的基础.所以,我们一定要打好基础,才能在考试中 ...

最新文章

  1. 计算机网络——数据通信过程
  2. 家用路由器支持组播吗_组播分布树及其转发模式
  3. 笔记整理-信息系统开发基础-软件测试-灰度测试
  4. @Deprecated使用技巧
  5. php使用redis命令,PHP 使用 Redis
  6. C语言实现方差variance计算(附完整源码)
  7. 自定义控件-实现TextBox的禁止粘贴
  8. java输出日志_java代码中如何正确使用loggger日志输出
  9. windosw7 Hosts文件的位置
  10. 面向对象的一些基础概念
  11. java怎么把弹框设置为圆角_自定义圆角Dialog
  12. requestAnimationFrame制作动画:旋转风车
  13. .AsEnumerable() 和 .ToList() 的区别:
  14. ASP 读取Word文档内容简单示例
  15. ISO20000对高校构建IT服务管理体系的应用价值和实践意义
  16. android 代码设置 键盘适应_实现Android键盘的中英文适配
  17. Browser 相关内容
  18. 【IO流】初学IO流
  19. this指向和如何改变this指向 (详解)
  20. 安科瑞配电列头柜产品XXX数据中心案例分享

热门文章

  1. 开源 免费 java CMS - FreeCMS-信息页静态化参数 .
  2. HttpApplication的认识与加深理解
  3. Silverlight控件应用系列索引
  4. 《C语言接口与实现:创建可重用软件的技术》一1.5 习题
  5. java工程开发之图形化界面之(第六课)
  6. Windows server 2003 Cpu的-性能报警
  7. SQL 的 left join 和 right join
  8. 服务端/web+客户端模式配置
  9. PHP parseurl 一个好用的函数
  10. header中Content-Disposition的作用