博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4870 [Shoi2017]组合数问题 【组合数 + 矩乘】
阅读量:4364 次
发布时间:2019-06-07

本文共 1764 字,大约阅读时间需要 5 分钟。

题目链接

题解

\[ans = \sum\limits_{i = 0}^{\infty}{nk \choose ik + r} \pmod p\]

发现实际是求
\[ans = \sum\limits_{i = 0}^{\infty}{nk \choose i}[i \mod k = r] \pmod p\]
\(f[i][j]\)表示\(i\)个数选出\(x \mod k = j\)个数的方案数
利用组合数递推 + 矩乘转移即可

#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LL long long int#define REP(i,n) for (int i = 1; i <= (n); i++)#define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt)#define cls(s,v) memset(s,v,sizeof(s))#define mp(a,b) make_pair
(a,b)#define cp pair
using namespace std;const int maxn = 55,maxm = 100005,INF = 0x3f3f3f3f;inline int read(){ int out = 0,flag = 1; char c = getchar(); while (c < 48 || c > 57){if (c == '-') flag = 0; c = getchar();} while (c >= 48 && c <= 57){out = (out << 1) + (out << 3) + c - 48; c = getchar();} return flag ? out : -out;}int n,r,K,P;struct Matrix{ int s[maxn][maxn],n,m; Matrix(){cls(s,0);n = m = 0;}}A,F0,F;inline Matrix operator *(const Matrix& a,const Matrix& b){ Matrix c; if (a.m != b.n) return c; c.n = a.n; c.m = b.m; for (int i = 0; i < c.n; i++) for (int j = 0; j < c.m; j++) for (int k = 0; k < a.m; k++) c.s[i][j] = (c.s[i][j] + 1ll * a.s[i][k] * b.s[k][j] % P) % P; return c;}inline Matrix qpow(Matrix a,LL b){ Matrix re; re.n = re.m = a.n; for (int i = 0; i < re.n; i++) re.s[i][i] = 1; for (; b; b >>= 1,a = a * a) if (b & 1) re = re * a; return re;}int main(){ n = read(); P = read(); K = read(); r = read(); F0.n = K; F0.m = 1; F0.s[0][0] = 1; A.n = A.m = K; for (int j = 0; j < K; j++){ A.s[j][j]++; A.s[j][(j - 1 + K) % K]++; } F = qpow(A,1ll * n * K) * F0; printf("%d\n",F.s[r][0]); return 0;}

转载于:https://www.cnblogs.com/Mychael/p/9266814.html

你可能感兴趣的文章
双表联合查询
查看>>
HBuilder控制台集成命令提示符(终端/CMD)功能
查看>>
我存在的问题 很头大 这里啊
查看>>
Linux 下 MQ 的安装
查看>>
JAVA语法基础作业——动手动脑以及课后实验性问题 (二)
查看>>
2018-2019-1 20165337 《信息安全系统设计基础》第六周学习
查看>>
C++函数参数传递方式(Effective C++之20, 21)
查看>>
在Html页面中调用ajax代码
查看>>
Contest2178 - 2019-4-18 高一noip基础知识点 测试7 题解版
查看>>
JAVA:23种设计模式详解(转)
查看>>
Spring AOP实战例子与springmvc整合不起效果的解决办法
查看>>
<mvc:annotation-driven />注解意义
查看>>
深度剖析Dubbo源码
查看>>
20135333苏正生——信息安全系统设计基础第八周学习总结
查看>>
编写简单的脚本使用工具
查看>>
[APIO2010]特别行动队
查看>>
bzoj1833数字计数
查看>>
LeetCode "Maximum Product Subarray"
查看>>
JMeter
查看>>
laravel 处理自定错误页面,如404,500,501,502,503,504等等
查看>>