组合数学
文章平均质量分 76
AC_Gibson
这个作者很懒,什么都没留下…
展开
-
POJ1091 跳蚤 素因子分解+容斥原理
题目链接:http://poj.org/problem?id=1091分析:我们假设卡片上的标号分别是a1,a2,...,an,M,跳蚤跳对应标号的卡片的次数分别为x1,x2,...,xn,xn+1,那么要满足已知条件只需满足方程a1*x1+a2*x2+...+an*xn+M*xn+1=1有解,即gcd(a1,a2,...,an,m)=1,接下来对M进行质因子分解,然后排除公共因子非1原创 2015-06-17 10:38:38 · 2296 阅读 · 0 评论 -
HDU2049 不容易系列之(4)——考新郎 错排问题
错排问题。先从n对新人中找出n-m对找对新娘的人,然后把剩下的m对错位排列一下,然后乘法原理把两个数相乘即可。n和m的范围不大,打表即可。#include #include using namespace std;int main(){ int t,n,m,i,j; long long f[25],c[25][25]={{0,1}}; f[0]=1;原创 2014-11-22 11:05:12 · 516 阅读 · 0 评论 -
2015编程之美挑战赛:扑克牌 全排列
第一题:扑克牌题目连接:http://hihocoder.com/contest/msbop2015round2b/problem/1时间限制:2000ms单点时限:1000ms内存限制:256MB描述一副不含王的扑克牌由52张牌组成,由红桃、黑桃、梅花、方块4组牌组成,每组13张不同的面值。现在给定52张牌中的若原创 2015-04-27 12:24:06 · 1379 阅读 · 0 评论 -
HDU 2048 神、上帝以及老天爷 错排问题
错位排列数D[n]=n!【1-1/1!+1/2!-......+(-1)^n*1/n!】;可以知道D[n]是满需以下两条的:(1)D[1]=0;D[2]=1;即只有一个人的情况,他的错排数为0,两个人时只有一种错排可能。(2)D[n]=(n-1)(D[n-1]+D[n-2]);对于n>2的情况可以分两步来考虑:第一步,我们把第一个位置上的数放到剩下的n-1个位置当中的一个,原创 2014-11-21 13:04:18 · 552 阅读 · 0 评论 -
C++STL中全排列函数next_permutation的使用
next_permutation函数 组合数学中经常用到排列,这里介绍一个计算序列全排列的函数:next_permutation(start,end),和prev_permutation(start,end)。这两个函数作用是一样的,区别就在于前者求的是当前排列的下一个排列,后一个求的是当前排列的上一个排列。至于这里的“前一个”和“后一个”,我们可以把它理解为序列的字典序的前后,原创 2015-04-27 12:35:02 · 33902 阅读 · 2 评论 -
POJ3219 Binomial Coefficients Lucas定理
题目链接:http://poj.org/problem?id=3219题目大意:判断C(n,k)是否为奇数,其中n,k的范围为2^31.分析:大组合数取模==>Lucas定理要判断C(n,k)是否模2为1(即C(n,k)为奇数),由Lucas定理可知,C(n,k)mod 2=C(a[m],b[m])×C(a[m-1],b[m-1)×...×C(a[0],b[0])mod原创 2015-05-29 19:18:56 · 616 阅读 · 0 评论 -
HDU3304 POJ3146 Interesting Yang Hui Triangle Lucas定理
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3304 http://poj.org/problem?id=3146题目大意:找出杨辉三角中第n+1行不能被素数p整除的数有多少个。分析:这题是HDU4349的加强版。同样是Lucas定理解决。我们知道,对于一个组合数C(n,m)mod p来说,我们原创 2015-05-29 20:53:49 · 1643 阅读 · 0 评论 -
HDU3939 Sticks and Right Triangle 毕达哥拉斯三元组+容斥原理
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3939题目大意:给出一个n,找出不超过n的毕达哥拉斯三元组的数目。分析:这题和POJ1305差不多,只是数据范围大了一些(n为10^12),显然我们不能再去暴力枚举了。大致看一下m和n的范围可知,m(1)m为偶数时: ①如果m ②如果m原创 2015-06-17 14:40:22 · 869 阅读 · 0 评论 -
HDU4349 Xiao Ming's Hope Lucas定理
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4349题目大意:找出杨辉三角第n+1行中有多少个奇数。分析:n的范围比较大(10^8数量级),考虑到大组合数取模(找奇数,即对2取模)的问题,自然而然就想到Lucas了(关于Lucas定理:点击打开链接)。我们知道对于求C(n,m)mod p,Lucas定理是把组合数中的n和m换原创 2015-05-29 18:35:09 · 508 阅读 · 0 评论 -
Lucas定理应用分析——大组合数取模
首先给出Lucas(卢卡斯)定理: 有非负整数A、B,和素数p,A、B写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。则组合数C(A,B)与C(a[n],b[n])×C(a[n-1],b[n-1])×...×C(a[0],b[0]) mod p同余。即:Lucas(n,m,p)=C(n%p,m%p)×Lucas(n/p,m/p,p) ,原创 2015-05-29 12:36:58 · 1853 阅读 · 1 评论 -
HDU5446 Unknown Treasure Lucas+中国剩余定理
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5446题目大意:求C(n,m) mod M的值,其中M=p1*p2*...*pk分析:首先我们由Lucas定理可以解决大组合数取模的问题,即,我们先求出Ai=C(n,m) mod pi,然后得到k组线性同余方程组,接下来中国剩余定理解出方程组的解即可。需要注意的是,由于n和m都是原创 2015-09-16 17:11:04 · 512 阅读 · 0 评论