组合数学
morejarphone
这个作者很懒,什么都没留下…
展开
-
HDU5514(容斥)
#include using namespace std; typedef unsigned long long ll; #define maxn 1111111 long long n, m; vector fac; long long a[maxn], b[maxn]; int vis[maxn]; long long ans = 0; void fenjie () { fac原创 2015-11-08 23:12:03 · 445 阅读 · 0 评论 -
POJ 3904 (莫比乌斯反演)
Sky Code Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 1964 Accepted: 629 Description Stancu likes space travels but he is a poor software developer and原创 2016-03-11 20:47:37 · 549 阅读 · 0 评论 -
UVA 11609 (组合数学)
题意:求.原创 2016-06-07 22:52:55 · 282 阅读 · 0 评论 -
HDU 4675 (莫比乌斯反演)
HDU 4675 (莫比乌斯反演)题目链接题意:给定n个数,每个数不超过m,和k.问从dd从11到mm能够构造多少个bb数组使得bb数组的gcdgcd为dd并且bb数组每个数都不超过mm,并且恰好有kk个数和下表对应的a数组的数不相等.用F(x)F(x)表示gcd为x的倍数的方案数,f(x)f(x)表示gcd为x的方案数.先考虑F(d)F(d)怎么计算.可以把a数组中的数分成两类,第一类是必须对应下原创 2016-06-10 23:42:20 · 604 阅读 · 0 评论 -
HDU 1465 (错排公式)
题目链接:点击这里假设dpidp_i表示i个元素错排的方案数, 有dpi=(n−1)×(dpi−1+dpi−2)dp_i=(n-1)\times (dp_{i-1}+dp_{i-2})第一个元素不放在1位置有n−1n-1种, 假设放在i位置, i放在1相当于n−2n-2个元素错排, i不放在1相当于n−1n-1个元素错排.#include <bits/stdc++.h> using namespac原创 2016-06-28 20:10:35 · 291 阅读 · 0 评论 -
HDU 4407 (容斥)
题目链接:点击这里题意: 给出1,2,3…n这个序列, 然后两种操作: 求某一个闭区间和p互质的数的和; 改变某一个数.因为操作数比较少, 所以改变可以都存下来, 计算原区间的结果, 然后用存下来的改变更新下就好了. 区间互质的和可以容斥可以反演很sz.#include <bits/stdc++.h> using namespace std; #define maxn 400005int n, m;原创 2016-07-05 19:53:35 · 358 阅读 · 0 评论 -
HDU 5768 (中国剩余定理 容斥)
题目链接:点击这里题意:求区间中7的倍数并且模pip_i不等于aia_i的个数.相当于求模7等于0的数中扣掉模pip_i等于aia_i的个数,这个东西看着就很容斥。先枚举限制条件的组合,然后加上模7等于0这个条件,这一堆条件看着就很中国剩余定理,然后搞出一个前缀区间有多少个符合条件的数,加加减减就行了。(嘴炮5分钟,代码两小时=。=)trick:中国剩余定理里面会爆longlong,所以换成快速乘法原创 2016-07-29 13:06:40 · 593 阅读 · 0 评论 -
POJ 3731 (组合数学)
题目链接:点击这里题意:给出一个n*m的图,起点在(0,0)(0,0),终点在(x,y)(x,y),只能往前走或者右拐并且不能经过重复的点。求到达终点的方案。考虑从左右上下四个方向到达终点。假设考虑从左走到达终点,那么已经存在的是一根横线和一根竖线,然后每次的路径上下左右的线都是相等的,所以处理出来上下左右最多能够提供几根线然后拿组合数乘一下就好了。 如下图: 1,2表示出发时的直线(从左边原创 2016-10-13 16:12:24 · 399 阅读 · 0 评论 -
2016四川省赛H (组合数学)
题目链接:点击这里题意:给出一个树,每一个树边都有2∗ci2*c_i条,求从1出发回到1的欧拉回路个数。按照每一条边以及边之间的相对次序计算对答案的贡献。对于父亲节点u,他到某一个儿子节点的边数如果是cic_i,那么ans∗(2ci)!ans*(2c_i)!。然后所有的这些儿子节点的路径经历的相对次序又对答案产生一部分贡献,所以假设某个节点有nownow对出去的路径(包括通向他父亲的路径对数-1),原创 2016-10-06 20:44:53 · 472 阅读 · 0 评论 -
HDU 5651 (组合 水~)
xiaoxin juju needs help Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 431 Accepted Submission(s): 123 Problem Description As w原创 2016-03-26 23:26:07 · 723 阅读 · 0 评论 -
UVALive 7040 (容斥)
题意:n朵花,从m种颜色中选择k种颜色使得相邻花不同色的方案数. 对于比较小的数据,这道计数题可以用DP做,DP[i][j]表示染i朵花用了j种颜色的方案数,那么对于后i-1朵花,要么用了j种颜色,要么用了j-1种颜色,转移方程也就很简单了DP[i][j] = j*(DP[i-1][j-1]+DP[i-1][j]). 但是这题的数据比较大,所以考虑容斥原理. 首先组合数递推公式:原创 2016-03-13 22:31:28 · 625 阅读 · 2 评论 -
HDU5072(容斥)
题目要求n个不同数中gcd两两为1或者两两不为1的三元对个数。 这是个单色三角形问题,大白105页有描述,主要要求对于每个数,其他的数中有几个数和它的gcd不是1。 坑点是会爆int,于是我一怒之下都改成了longlong~~~~ #include #include #include #include #include #include #include using names原创 2015-10-01 22:41:18 · 412 阅读 · 0 评论 -
HDU1796(容斥)
有几个坑点: 1.m个数中可能存在0 2.m个数的LCM可能爆int 3.比n小 3.如果m个数有1,直接输出n-1 #include #include #include #include #include #include #include using namespace std; #define maxn 11 long long n, num[maxn], m, c原创 2015-09-30 13:21:23 · 558 阅读 · 0 评论 -
HDU5525(乘法原理)
首先把每一个数拆成质因数的乘积,把对应的次数累计起来。然后设第i个质因数的指数累计的和是ai,那么i^t(0 然后各种取模。 #include #include #include #include #include using namespace std; #define maxn 111111 long long mod = 1e9+7; long long num[maxn],原创 2015-11-01 00:10:39 · 385 阅读 · 0 评论 -
POJ2773(容斥+二分)
题目要求和m互质的第k大。 那么二分区间,统计区间内和m互质的数个数,所有个数为k结果最小的就是答案。 k比较大最初二分的右端点开大点。 #include #include #include #include #include #include using namespace std; #define maxn 1111111 #define count Count long原创 2015-10-02 10:37:48 · 485 阅读 · 0 评论 -
HDU 1695(容斥)
#include #include #include #include #include #include using namespace std; #define maxn 111111 int c, d, a, b, k; vector gg[maxn]; bool is_prime[maxn]; int cnt, prime[maxn]; void get_prime ()原创 2015-09-30 08:46:52 · 336 阅读 · 0 评论 -
NEUOJ 1660 (容斥+矩阵)
1660: Sequence 时间限制: 5 Sec 内存限制: 128 MB 提交: 13 解决: 3 [提交][状态][讨论版] 题目描述 Easy question once more! define f(n) = f(n-1) + f(n-2) (n>=3), f(1) = f(2) = 1 you task is calculating g(n) = sigm原创 2015-11-30 21:00:41 · 294 阅读 · 0 评论 -
莫比乌斯反演学习笔记
莫比乌斯反演的形式: 另一种描述是: 一种是和所有的约数有关一种是和所有的倍数有关,解题的时候要根据题目选择合适的表达形式,感觉第二种用的比较多。 关于莫比乌斯函数mu,他的定义如下: 这个莫比乌斯函数有一些性质: (1) (2) 一般需要预处理所有的莫比乌斯函数值,需要用到线性筛 mu[1] = 1; for (int i = 2;原创 2016-03-09 20:24:59 · 1063 阅读 · 0 评论 -
HDU 5656 (莫比乌斯反演)
CA Loves GCD Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 61 Accepted Submission(s): 14 Problem Description CA is a fine co原创 2016-04-02 21:38:15 · 1238 阅读 · 3 评论 -
codeforces 645F (莫比乌斯反演)
题目链接:点击这里题意:给出初始n个数,问每次增加一个数字后的k元组的gcd之和.只需要求出gcd分别等于1-1e6的k元组数. 设F[x]F[x]表示gcd等于x的倍数的k元组数量,f[x]f[x]表示gcd等于x的k元组数量,那么就有: ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪f[1]=μ(1)F[1]+μ(2)F[2]+μ(3)F[3]+⋯+μ[n]F[n]f[2]=μ(1)F[2]+μ(2)F[4]+μ原创 2016-12-04 20:56:30 · 773 阅读 · 0 评论