随笔分类 -  组合数学

摘要:1 #include <cstdio> 2 using namespace std; 3 4 #define MAX_NUMBER 100000 5 //快速幂求x^n%mod 6 long long quick_pow(long long x, long long n, long long mod 阅读全文
posted @ 2020-11-07 22:32 JamZF 阅读(185) 评论(0) 推荐(1)
摘要:圆排列公式:从n个元素中选r进行圆排列。 例题:https://codeforc.es/contest/1433/problem/E 1 #include<bits/stdc++.h> 2 #define ll long long 3 #define IOS ios::sync_with_stdio 阅读全文
posted @ 2020-10-24 12:39 JamZF 阅读(2002) 评论(0) 推荐(0)
摘要:卡塔兰数 卡塔兰数是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。 卡塔兰数的一般项公式为 另类递归式: h(n)=((4*n-2)/(n+1))*h(n-1); 前几项为 (OEIS中的数列A000108): 1, 1, 2, 5 阅读全文
posted @ 2020-08-25 20:49 JamZF 阅读(370) 评论(0) 推荐(1)
摘要:题目链接:https://vjudge.net/problem/HDU-2082 题意:中文题。 思路:构造普通母函数求解。 母函数: 1 #include<time.h> 2 #include <set> 3 #include <map> 4 #include <stack> 5 #include 阅读全文
posted @ 2020-08-24 15:53 JamZF 阅读(135) 评论(0) 推荐(1)
摘要:题目链接:https://vjudge.net/problem/HDU-1521 题意:有n种物品,并且知道每种物品的数量。要求从中选出m件物品的排列数。例如有两种物品A,B,并且数量都是1,从中选2件物品,则排列有"AB","BA"两种。 思路: 指数型母函数求组合数板子。 指数型母函数介绍见: 阅读全文
posted @ 2020-08-24 15:37 JamZF 阅读(290) 评论(0) 推荐(1)
摘要:题目链接:https://vjudge.net/problem/HDU-4497 题意:求有多少组(x,y,z)满足gcd(x,y,z)=a,lcm(x,y,z)=b。 思路:对于x,y,z都可以写成x = p1^a1*p2^a2*p3^a3....pn^an;y = p1^b1*p2^b2*p3^ 阅读全文
posted @ 2020-08-23 22:28 JamZF 阅读(133) 评论(0) 推荐(1)
摘要:题目传送门:https://vjudge.net/problem/POJ-3370 题意:在n个数中找K个数使得他们的和为c的倍数。 题解:抽屉原理,同poj 2356 只不过写法上有所简化。 简化版: 1 //#include<bits/stdc++.h> 2 #include<time.h> 3 阅读全文
posted @ 2020-08-23 13:16 JamZF 阅读(121) 评论(0) 推荐(1)
摘要:鸽巢原理(抽屉原理) 基本描述 桌子上有是个苹果,把这十个苹果放到九个抽屉里,无论怎么放,我们会发现至少会有一个抽屉里面至少放两个苹果。这一现象就是所说的“抽屉原理”。更一般的表述:如果每一个抽屉代表一个集合,每一个苹果就可以代表一个元素。加入有n+1个元素放到n个集合中去,其中必定有一个集合里至少 阅读全文
posted @ 2020-08-23 11:09 JamZF 阅读(772) 评论(0) 推荐(1)