[DP 倍增] BZOJ 4870 [Shoi2017]组合数问题
来源:互联网 发布:mac版office2016下载 编辑:程序博客网 时间:2024/05/22 12:44
就是求
这个直接dp
矩阵快速幂是
实际上这个转移满足结合律 直接在快速幂的时候转移就好了
另一种理解是 这个矩阵是循环矩阵 矩阵的记录和乘法都只要处理第一行就好了
复杂度是代码比想象中短
#include<cstdio>#include<cstdlib>#include<algorithm>using namespace std;typedef long long ll;int n,P,k,r;int a[55],b[55],t[55];inline void mul(int *a,int *b){ for (int i=0;i<k;i++) for (int j=0;j<k;j++) (t[(i+j)%k]+=(ll)a[i]*b[j]%P)%=P; for (int i=0;i<k;i++) a[i]=t[i],t[i]=0;}int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); scanf("%d%d%d%d",&n,&P,&k,&r); a[0]++; b[0]++; b[1%k]++; for (ll y=(ll)n*k;y;y>>=1,mul(b,b)) if (y&1) mul(a,b); printf("%d\n",a[r]); return 0;}
0 0
- [DP 倍增] BZOJ 4870 [Shoi2017]组合数问题
- bzoj4870 [Shoi2017]组合数问题(dp+矩阵倍增)
- BZOJ 4870 [Shoi2017] 组合数问题
- bzoj 4870: [Shoi2017]组合数问题
- bzoj 4870: [Shoi2017]组合数问题 动态规划
- bzoj P4870 [Shoi2017]组合数问题
- 4870: [Shoi2017]组合数问题
- BZOJ 4870: [Shoi2017]组合数问题 (递推+矩阵快速幂)
- 【BZOJ4870】组合数问题(SHOI2017)-矩阵优化DP
- jzoj5215&&bzoj4870[Shoi2017]组合数问题 dp+矩阵快速幂
- [BZOJ4870][SHOI2017]组合数问题 DP+矩阵快速幂
- BZOJ4870: [Shoi2017]组合数问题
- Bzoj4870:SHOI2017-组合数问题
- BZOJ4870: [Shoi2017]组合数问题
- [bzoj4870] [Shoi2017]组合数问题
- 【bzoj 4870】组合数问题
- [BZOJ4870][Shoi2017]组合数问题 矩阵快速幂
- BZOJ 4870 HEOI 2017 组合数问题
- tensorflow入门学习
- C149课的主要内容
- 《Cracking the Coding Interview程序员面试金典》----最大字母矩阵(字母相同)
- Easyui中Validatebox控件和正则表达式
- 其他笔记 博客目录
- [DP 倍增] BZOJ 4870 [Shoi2017]组合数问题
- 网页布局,左右固定,中间自适应
- reduce()
- GUI简易计算器(JFrame)带粘贴复制剪切退出,带快捷键
- 二叉搜索树之二
- leetcode--Remove Nth Node From End of List
- poj1061 青蛙的约会 数论之拓展欧几里德(连青蛙都约会了 我们还在敲代码。。)
- Mysql学习笔记二十四——触发器
- 图-最小生成树-kruskal算法