组合数专题

组合数专题

直接贴上代码,以后再补充。。。。。。

方法1:

const int N = 1e5 + 10;
const int MOD = 1e9 + 7;
int f[N], finv[N], inv[N];

void init(void) {
    inv[1] = 1;
    for (int i=2; i<N; ++i) {
        inv[i] = (MOD - MOD / i) * 1ll * inv[MOD%i] % MOD;
    }
    f[0] = finv[0] = 1;
    for (int i=1; i<N; ++i) {
        f[i] = f[i-1] * 1ll * i % MOD;
        finv[i] = finv[i-1] * 1ll * inv[i] % MOD;
    }
}

int comb(int n, int k)  {       //C (n, k) % MOD
    if (k < 0 || k > n) return 0;
    return f[n] * 1ll * finv[n-k] % MOD * finv[k] % MOD;
}

 

方法2:

const int N = 2000 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
int comb[N][N];

void init(void) {
    for (int i=0; i<N; ++i) {
        comb[i][i] = comb[i][0] = 1;
        for (int j=1; j<i; ++j) {
            comb[i][j] = comb[i-1][j] + comb[i-1][j-1];
            if (comb[i][j] >= MOD)  {
                comb[i][j] -= MOD;
            }
        }
    }
    //printf ("%d\n", comb[6][3]);
}

  

时间: 2024-08-01 22:45:34

组合数专题的相关文章

wxy和zdy眼中的水题 地精部落 dp

题目描述 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi,其中Hi是1到N 之间的正 整数. 如果一段山脉比所有与它相邻的山脉都高,则这段山脉是一个山峰.位于边 缘的山脉只有一段相邻的山脉,其他都有两段(即左边和右边). 类似地,如果一段山脉比所有它相邻的山脉都低,则这段山脉是一个山谷. 地精们有一个共同的爱好——饮酒,酒馆可以设立在山谷之中.地精的酒馆 不论白天黑夜总

矩阵快速幂专题(一)

最近闲来无事,准备集中精力刷一波数论与图论.矩阵快速幂是数论里面的重要组成部分,值得我好好学习一下.因为题目比较多,分析也比较多,所以将此专题分成几个部分.做完这一专题,可能会暂时转向图论部分,然后等我组合数学学得差不多了,再回过头来继续做数论题. 矩阵快速幂算法的核心思想是将问题建模转化为数学模型(有一些简单题目是裸的矩阵模型,但是大部分难题就是难在要构造矩阵,用矩阵方法解决问题),推倒递推式,构造计算矩阵,用快速幂的思想求解矩阵A的n次方取mod,从而得到矩阵里面你需要的数据. 矩阵快速幂问

对组合数取模

看这个之前建议先看一下n!…… 对于组合数我们可以将其表示成阶乘的形式:C(n,k)= .那我们不妨把这三个阶乘全部表示成上个专题的形式.这样的话,如果对于e1>e2+e3就可以被p整除,e1=e2+e3就无法被p整除.在无法被整除的情况下C(n,k)=a1(a2a3)-1 1 int mod_comb (int n, int k, int p){ 2 if (n<0||k<0||n<k) return 0; 3 int a1=mod_fact(n,p,e1),a2=mod_fac

矩阵专题(续)

哈哈哈,失踪人员回归.最近总是在忙一些乱七八糟的事情,终于有了一段空闲时间可以刷刷题了.学姐给我准备了kuangbin先生的矩阵专题,作为我的矩阵终结专题.(初学者请先看我的矩阵专题前三篇) 第一题 CodeForces 450B 分析:这道题看似是一道矩阵题,但是实际上是一道模拟题.看题目给出的公式 f(i)=f(i-1)+f(i+1),i>=2,那么转换一下得到了f(i)=f(i-1)-f(i-2),i>=3,当然这题可以使用矩阵快速幂来算,但是多此一举.不妨将f(1)=x  f(2)=y

矩阵快速幂专题(三)

哈哈哈,博主又回来了!这次专题是第三弹也是最后一弹了,这次会对矩阵进行一个小收尾.做完这25道题,我感觉到其实我矩阵学得并不好,还有许多知识点没有学会.后面看情况可能还会继续开矩阵的专题,那应该是几个月以后的事了.从下周开始,应该会先学习一下数论的相关算法! 这次的七道题目(为什么题目越来越少了)主要是针对了矩阵的优化,对于会TLE的和MLE(内存爆了)的矩阵而且这个矩阵又恰好是同构矩阵(同构矩阵是啥?)的话,可以采用一维数组来模拟二维,从而降低复杂度.降低空间.(竟然是罕见的同时降时间和空间的

[考试反思]数学专题测试4:深度

高斯消元专题测试 联赛后第一次爆零???我也不知道发生了什么 感觉和放假的关系不大啊... 虽说题比平时难而且数据范围出了一点锅,但是爆零有点过了?? 一眼看T3,MatrixTree啊肯定的,然后想到之前做的那个不等式的那道题直觉是容斥. 结果又想到了那个专题里幻想乡的那道题,于是更加笃定是容斥,结果思路就阻塞了. 20分的部分分好像很难写,就往后放了放,结果最后并没有时间写. 然后看起来比较简单的是T2,直到看到数据范围之前我都认为应该不会太难. 基础式子都会写,然后组合数忘记特判不合法的0

【团购巨划算】韩立刚老师门徒级学习专题,只此一次的超大优惠福利

Q:韩立刚老师是谁? A:韩老师是51CTO金牌讲师(最高级别),也是微软最有价值专家MVP.微软企业护航专家.<计算机网络原理>一书作者 讲师主页:http://edu.51cto.com/lecturer/400469.html Q:门徒级学习专题是什么? A:韩立刚老师门徒级课程专题(Windows Server+网络安全+数据库) 韩老师从2013年至今,根据企业对IT运维人才的技术要求,录制视频教程49 门,时长达581小时50分钟.旨在从0起点培养企业高端IT人才,让你在企业IT部

[Shoi2017]组合数问题 BZOJ4870

这道题可以根据组合数的实际意义来理解,就是从n*k个物品中选择除k余r个物品的方案数,那么就可以得到用f[i][j]表示在前i个物品中,选择j个物品的方案数,其中j是对k取模后的结果,那么f[i][j]=f[i-1][j](在第i为不取)+f[i-1][(j-1+k)%k](在第i为取),可以发现,第i位只与i-1位有关系那么久可以用矩阵快速幂优化, 在做矩阵乘法的时候,要特别注意矩阵乘特别容易爆int,所以矩阵数组要开成long long 另外这道题还有一个坑点,就是当k=1,r=0是,转移到

组合数问题

组合数公式: 计算组合数的递推方法: C[i, j] := C[i - 1, j] + C[i - 1, j - 1]  (0 < i ≤ j ≤ m ≤ n) 与杨辉三角在形式上一致. 代码: for (int i = 1; i <= n; i++) { c[i][1] = i % k; c[i][i] = 1; // 预处理 } for (int i = 2; i <= n; i++) for (int j = 2; j <= i - 1; j++) // 递推 c[i][j]