组合数学
風吹过
这个作者很懒,什么都没留下…
展开
-
UVA 10601 CUBES (正方体Polya,有限制)
题目:有12条边,分别有特定的颜色,组成一个立方体,问有多少种http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1542首先重要的是要弄清楚正方体的旋转,共24种变换。1、静止不动,那么就是12个循环,每个循环节长度为12、通过转载 2013-08-02 20:46:21 · 666 阅读 · 0 评论 -
zoj 3687 The Review Plan I(禁为排列模板)
题意:复习功课,有n章,每天复习1章,但有m个要求,第i章不能在第j天复习,问有多少种复习方式?#include#include#include#includeusing namespace std;typedef long long LL;#define MOD 55566677#define N 55LL f[N],res;int n,m,vis1[N],vi原创 2013-09-04 11:03:41 · 1368 阅读 · 0 评论 -
uva 1016 - Silly Sort(置换的灵活应用)
题意:给你n个不同数,可以进行一种操作,交换任意两个数的位置,则花费为两数的和,求把原序列变为严格单调递增的序列的最小花费解析:通过置换可以发现原序列可以分为多个周期(循环)的变换,如8 4 5 3 2 7 变为(8 2 7)和(4 3 5),对于每个周期,所有数都不在他升序后的位置,即所有的数都需要交换,每次用周期内最小的数与另一个数交换,设这个周期的最小值为min,数量为size,原创 2013-09-13 09:34:16 · 947 阅读 · 0 评论 -
uva 12050 - Palindrome Numbers
#include#include#include#includeusing namespace std;typedef long long LL;const LL maxx=2000000000;#define N 100LL sum[N],dp[N];void inint(){ int i,j; dp[0]=0; sum[1]=dp[1]=9原创 2013-09-30 22:31:59 · 670 阅读 · 0 评论 -
uva 11038 - How Many O's?
题意:求[m,n]中有多少个0题解:分位数分析:n的第i位不为0=n左边的数(高位)*10^(i-1)n的第i位为0 =(n左边的数-1)*10^(i-1)+(i位右边的数+1)ans=f(n)-f(m-1);注意m为0的情况即可。#include#include#include#includeusing namespace std;typed原创 2013-10-03 10:52:51 · 598 阅读 · 0 评论 -
uva 10883 - Supermean( 找规律, log( c(n,m)) )
题意:给出n个数,每相邻两个数求平均数,将得到n-1个数,这样循环下去,直到得到最后一个数,求这个数?解析:设这个数为x, 经过分析可得2^(n-1)*x=a[i]*c(n-1,i)的和(0设 f[x]=log(x!);则 log( c (n,m)/(2^(n-1) ) )=f[n]-f[m]-f[n-m]-n*(log(2.0));再用exp()返回结果就可以了原创 2013-10-03 13:30:10 · 903 阅读 · 0 评论 -
uva 10294 - Arif in Dhaka (First Love Part 2) Polya定理
Polya定理和Burnside 引理的第一题,开始公式推错了,一直wrong ,后来发现是因为后面的Polya计数没看,与循环数有关 ,即旋转的时候循环数=gcd(n,i);其中n为点数,i为旋转间隔#include#includeusing namespace std;typedef long long LL;LL gcd(LL a,LL b){ retu原创 2013-07-31 20:04:01 · 743 阅读 · 0 评论 -
hdu 4059 The Boss on Mars(容斥原理)
题意:求1-n中与n互质的数的4次方之和,即S=a1^4+a2^4+……; a1,a2……均小于等于n且与n互质。先求出1^4+2^4+……n^4然后减去与n不互质的数的4次方。赤裸裸的容斥啊!!!!!!必然要先要用到4次方的求和公式。接下来简单的证明一下,这里前提是你知道3次方的公式,如果不会照下面的模式可以利用2次公式推出3次公式(x+1)^5=x^5+5*x^4+1原创 2013-11-02 17:34:30 · 557 阅读 · 0 评论 -
hdu 3037 Saving Beans( lucas定理+隔板法 )
题意:将不大于m颗种子存放在n颗不同的树中,可以为空,问有多少种存法。解析: 有隔板法可知 : m个种子,用 n-1个板子隔开,但由于可以为空,所以加n个种子,这样得到的答案是c(n+m-1,n-1);即为恰好放m个种子的放法数,可以考虑加一个板子,这样最后一个板子左侧的就是不大于m的部分,其右边是不需要的,所以 答案是C(n+m,n);这时就需要用lucas的模板了Lucas定理:原创 2013-11-18 21:17:48 · 723 阅读 · 0 评论 -
poj 3146 Interesting Yang Hui Triangle(lucas定理的应用)
题意:杨辉三角第n+1行有多少数不被p整除??解析:lucas定理:设p为质数,a,b为两正整数,且a,b在p进制下表示为 a=(ak……,a0),b=(bk……,b0) 0=<ai,bi<p证明 c[a,b]=c[ak,bk]*……*c[a0,b0](mod p) 证: p为质数时易证 (1+x)^p=1+x^p(mod p) (1+x)^a=(1+x)^(ak*p原创 2013-11-18 22:28:23 · 1112 阅读 · 0 评论 -
zoj 3688 The Review Plan II(禁位排列+容斥原理+乘法逆元)
题意:复习功课,有n章,每天复习1章,但第i章不能再第i天和第(i+1)%n 天复习,问有多少种复习方式? mod 10^9+7对于含k个禁排的,这里如果将X按照图上顺序标号,那么问题就转化成在1-2n的圆排列中去k个不相邻的方法数。#include#include#include#include#define mod 1000000007#d原创 2013-09-03 21:15:17 · 892 阅读 · 0 评论 -
hdu 4135 Co-prime(容斥原理)
题意:给你三个数a b n,求a~b 之间与n互质的数的个数 1解析: 暴力枚举出n的质因子,在容斥#include#include#include#include#includeusing namespace std;typedef __int64 LL;LL gcd(LL a,LL b){ return b==0?a:gcd(b,a%b);}ve原创 2013-09-03 10:05:24 · 561 阅读 · 0 评论 -
hdu 4390 Number Sequence(容斥原理)
题目:给出n个数,b1,b2,b3……bn,构造n个数,求有多少组序列a1,a2,……an(ai>1),使得a1*a2*a3……an=b1*b2……bn(bi>1);http://acm.hdu.edu.cn/showproblem.php?pid=4390 首先是将所有 的b进行素因子分解,则a和b的因子是完全一致的。剩下的便是将所有b的因子,分给a我们考虑某个素因子pi,如果有原创 2013-09-02 21:19:20 · 446 阅读 · 0 评论 -
zoj 3638 Fruit Ninja(多重集组合+乘法逆元+容斥原理)
题意: n种水果,取m个,每种水果可能有数量限制如苹果大于3个,桔子小于2个。问一共有几种取法?解答:多重集的x1+x2+。。。+xn=(m-k),k 为那些 至少多少个 的和,即c(n+r-1,r),其中r=m-k 求解c(n+r-1,r)时要用到逆元,求解那些至多多少个时,用容斥原理。。#include#include#include#includ原创 2013-08-20 09:23:44 · 1261 阅读 · 0 评论 -
hdu 4465 Candy( 概率 log 组合数 )
题意:两个瓶子里都装了n个糖果;从第一个瓶子拿的概率是p , 当你再拿糖果的时候,发现瓶子空了 ,求这时候另外一个瓶子的剩余的糖果的数量的期望 (1 ≤ n ≤ 2 × 10^5)这题的概率DP公式好求,即 但c(n,m) 太大,会上溢出, p^k 太小,会下溢出,这时就要用到 log 求组合了对于问题一: 排列过大,考虑到 y = log原创 2013-08-24 23:23:58 · 590 阅读 · 0 评论 -
poj 1942 Paths on a Grid(组合数模板)
题意:给你一个n*m的矩阵,问从左下角走到右上角有多少种方式? 只可以往右或上走。解析: 容易看出,只有一列直线时,向上有n条线段可以选,每增加一列,可以增加一条线段选择,即答案为c(n+m,n)求解 c(n+m,n) 时,可以直接套模板__int64 C(__int64 m, __int64 n){ if(m > n - m) m = n - m; _原创 2013-08-26 11:21:08 · 566 阅读 · 0 评论 -
poj 3286 How many 0's?
题意:计算从[a,b]期间中总共有多少个0。思路:比如1234,我们计算1到1234总共出现了多少个0,。当个位有0的时候,出现了123次当十位有0的时候,出现了12*10次当百位有0的时候,出现了1*100次但是若为1204,在计算十位0的个数的时候,是11*10+5,因为当前面是12的时候,最后一位只能取0-4,刚好5个#include#include原创 2013-08-26 19:46:04 · 474 阅读 · 0 评论 -
hdu 1796 How many integers can you find(容斥原理)
题意:求1->n-1之间能被一个集合A内元素整除的数的个数,例如n = 12, A = {2, 3} 则能被A集合元素整除的数的集合为{2, 3, 4 , 6, 8, 9, 10}则结果为7。二进制直接暴力枚举 1000MS 水过。。。re了好多次,,没想到输入忽然还有0,,,#include#include#includeusing namespa原创 2013-08-27 20:46:06 · 504 阅读 · 0 评论 -
hdu 4407 Sum(容斥定理)
题意:给你一个数1~n的序列,m次操作,每次操作可以单点修改,即把a【i】的值改成c; 或一次区间查询,玩第x个数到第y个数之间与p互质的数的和m解析:初看以为是线段树,但大神说是容斥原理,一个p查询进行一次容斥,居然不超时。。。。。。#include#include#include#include#includeusing namespace std;#define N原创 2013-08-28 20:04:39 · 490 阅读 · 0 评论 -
hdu 2204 Eddy's爱好(容斥原理)
题意:给你一个正整数N,确定在1到N之间有多少个可以表示成M^K(K>1)的数。本题有多组测试数据,每组包含一个整数N,1解析: 如果 A^Xi>=1)必然存在,即有A个数满足条件其x次幂 把n作为double型数,对其开k次方(我们不难发现,k 是不是这样算出的结果t就是答案呢?还不是。这一点就不太好想了,让我费好长时间也找不出反例,原创 2013-08-29 12:18:32 · 554 阅读 · 0 评论 -
hdu 4336 Card Collector(概率DP 或 容斥原理)
题意:有N(1每包至多一张卡片,可能没有卡片。求需要买多少包才能拿到所以的N张卡片,求次数的期望。解析: 这题一看反应就是概率DP,没怎么想到容斥,设dp【i】 表示当前状态i到达目标状态的期望花费(每包一个花费),这时需要二进制进行状态压缩,如6 为110 表示 第0张卡片没有,第1张和第二张有,则 dp【(1 容斥:需要知道,当只原创 2013-08-29 17:14:45 · 533 阅读 · 0 评论 -
poj 2154 Color(欧拉函数模板+ploya定理)
题目要求:给出两个整数n和p,代表n个珠子,n种颜色,要求不同的项链数,并对结果mod(p)处理。 置换只有旋转一种方式,那么共有n个置换 基本知识:环的个数为gcd(n , i) , 长度L=n / gcd(n , i) 其中 i 为转的位子数 普通求法: ∑n^( gcd(n,i) ) 0优化:枚举环的长度L 枚举优化: L可以从1取到sqrt(n) ,因为L|n ,原创 2013-09-09 15:36:23 · 600 阅读 · 0 评论 -
poj 3233 Matrix Power Series(矩阵快速幂+二分求和)
题意: 给定一个n*n的矩阵A,要求(A+A^2+....A^K)%m后的矩阵解析: 对于任意的A^x,我们都能够利用矩阵快速幂求出,但是我们现在要求的是和。仔细观察整个式子,那么我们可以对原式进行变形如果k为偶数,那么(A+A^2+....A^K) = (A+...+A^K/2)+A^K/2*(A+...+A^K/2)如果k为奇数,那么(A+A^2+....A^K)原创 2013-11-19 21:02:30 · 858 阅读 · 0 评论