组合数打表+二维前缀数组优化——组合数问题
2017-09-05 20:54
281 查看
题目来源
洛谷P2822组合数问题https://www.luogu.org/problem/show?pid=2822
思路
输入t和k之后 预处理一个模k意义下的2000的杨辉三角表前缀数组num
[m]记录C(0,0)~C(n,m)的矩形中有意义且(%k后)为0的组合数的数量
可以证得num[i][j]即为题中所求的对于所有的0<=i<=n,0<=j<=min(i,m)中满足C(i,j)是k的倍数的(i,j)的数量。
C_n^m
代码(C++)
C_n^m~
C_n^
#include <cstdio> using namespace std; int T,k,n,m,s,yh[2010][2010]; long long num[2010][2010]; inline void preyhsj();//预处理 int main() { scanf("%d%d",&T,&k); preyhsj(); for(int t=1;t<=T;++t) { scanf("%d%d",&n,&m); printf("%lld\n",num [m]); } return 0; } inline void preyhsj() { yh[0][0]=1; for(int i=1;i<=2000;++i) { yh[i][0]=1; yh[i][i]=1; s=0; for(int j=1;j<=i;++j) { yh[i][j]=(yh[i-1][j-1]+yh[i-1][j])%k; if(yh[i][j]==0) ++s; num[i][j]=num[i-1][j]+s; } for(int j=i+1;j<=2000;++j) num[i][j]=num[i][j-1]; } return ; }
相关文章推荐
- NOIP--组合数问题(数位DP+二维前缀和数组优化)
- 二维费用背包问题+空间优化(滚动数组)
- Noip 2016 组合数问题 - 数学 - 前缀和优化
- 连续子数组的最大和问题(一维和二维)To the Max (POJ 1050)
- 浅析连续子向量,子数组和(一维,二维)问题
- BZOJ3594 二维树状数组优化DP
- 树状数组求不带修改前缀最值问题 51NOD 1272 最大距离
- CS R14 C(模拟+二维前缀和) ,D(好题,前缀第i位异或+滑动区间),E(树计数+DP(前缀和优化))
- ACM暑假训练 问题 G: Balanced Photo (树状数组优化)
- hunnu11461—数组求和问题(前缀和)
- UPC-5911 计数问题(二维数状数组)
- codeforces 479E Riding in a Lift dp+前缀数组优化
- hdu 2152 Fruit 【分组背包解母函数——滚动数组优化陷阱问题】
- 二维数组求周长的问题
- [DP] [2D2D优化] [二维树状数组] [SCOI2014] 方伯伯的玉米田
- noip2016 Day2 T2-组合数问题-组合数学-前缀和
- C++ 二维动态数组创建及越界问题
- 浅析连续子向量,子数组和(一维,二维)问题
- 二维数组初始化问题
- 【(好题)组合数+Lucas定理+公式递推(lowbit+滚动数组)+打表找规律】2017多校训练七 HDU 6129 Just do it