
组合数学
文章平均质量分 58
Hacker_vision
一件事,你可以不去做,要做,就要全力以赴,做到最完美。
展开
-
排列组合:poj 3252 Round Numbers
题目链接:http://poj.org/problem?id=3252解题思路:怎么做我就不详细说了,统计半开半闭区间(0,n】所有Round Number的个数,枚举所有可能的情况,组合数相加(之前要打表),注重问题的分析过程。比较好的解题报告:(1)小優YoU: http://blog.youkuaiyun.com/lyy289065406/article/details/6648458原创 2015-02-04 15:39:41 · 636 阅读 · 0 评论 -
组合数最后非零位:poj 3406 Last digit
题目大意 求组合数C(n,m)=n!/((n-m)!×m!)的最后非零数位。解题思路 跟上一篇博客的解题思路类似,只需要稍作修改(三个阶乘) 注意:由于m!与(n-m)!的乘积并不是n!的子集,算出来幂的差很可能是负数;通过观察分析可知,只有n!中3的个数可能会少于分母,所以在取模之前处理一下,(pow_3%4 4)%4取得最小非负整数解。参考代码 部分解释:#include <iostrea原创 2015-02-07 13:06:49 · 727 阅读 · 0 评论 -
【巴什博奕】poj 2369 Buttons
poj 2369 Buttons http://poj.org/problem?id=2368【巴什博奕经典问题】一堆n个物品,两个人A、B轮流取物品,规定每人每次至少拿一个,最多拿m个,最后取光者得胜。巴什博奕求解 n = (m + 1) × r + s①若 n <= m , 第一个先拿的赢;②若 n > m ,如果 n % (m + 1) == s > 0,第一个人拿s,之后保证留给第二个人(原创 2015-09-18 15:44:28 · 397 阅读 · 0 评论 -
【裸polya定理】poj 2409 Let it Bead
poj 2409 Let it Bead http://poj.org/problem?id=2409思路polya定理经典问题:c种颜色的珠子组成长为s的项链的方案数,项链没有方向和起始位置参考代码 #include<iostream>#include<cstdio>#include<cstdlib>using namespace std;typedef long long ll;cons原创 2015-09-17 17:51:44 · 454 阅读 · 0 评论 -
【组合计数dp】UVA 11401 Triangle Counting
http://acm.hust.edu.cn/vjudge/contest/view.action?cid=84307#problem/Bdp思想+容斥思想,强行找规律/* uva 11401 组合计数dp题意: 1-n中取三个能够成三角形的方案数思路: 暴力O(n^3)所以要考虑相互关系 很容易想到dp[i]=dp[i-1]+f(i),f(i)为以i结尾原创 2015-10-16 19:40:06 · 406 阅读 · 0 评论 -
【卡特兰数】hdu 2067 小兔的棋盘
hdu 2067 小兔的棋盘http://acm.hdu.edu.cn/showproblem.php?pid=2067问题描述:卡特兰数的应用 http://www.cppblog.com/MiYu/archive/2010/08/07/122573.html卡特兰数的递推及通项公式: h(n) = h(0)h(n-1) + h(1)h(n-2)+……+h(n-1)h(0) h(n) = h(原创 2015-09-28 22:32:53 · 698 阅读 · 0 评论 -
容斥原理:poj 3904 Sky Code
我们尝试从集合论的角度理解容斥三个圆圈和事件可以表示为推广到n个集合的容斥关系可以得到这样的关系:奇数加、偶数减例题一. poj 3904 Sky Code题目大意给一串数字,求解互质四元组的个数(注意不必两两互质)解题思路网上有很多代码,但是详细讲解的很少,这里结合笔者的思路详细论述一下解题思路,耐心一看。首先容易想到,想计算不互质的四元组的个数,再用总的减去,关键是怎样计数不互质四元组的个数??原创 2015-02-16 11:50:33 · 1097 阅读 · 0 评论 -
鸽巢原理:hdu 1205 吃糖果+poj 2356 Find a multiple+poj 3370 Halloween treats
鸽巢原理也称抽屉原理,原理简单但应用却很广泛。**(一)基本原理** **n+1只鸽子飞回n个鸽巢,至少有一个鸽巢含有不少于2只的鸽子。 另一种表述:假如有n+1个元素放到n个集合中,其中必定至少有一个集合里有2个元素**hdu 1205 吃糖果(基本原理)题目大意给定n种类型的糖果各自的数量,问吃糖果时能不能不是连续吃到同一种糖果。解题思路1.插空法,找到数量最多的糖果,假设有n个,则有n+1原创 2015-02-11 23:36:11 · 1253 阅读 · 0 评论 -
组合数学总结帖
(一)排列组合1.排列数递归调用2.组合数递归调用3.综合性问题(注重问题分析)(二)母函数1.母函数2.指数型母函数3.整数拆分(待学习,整数分解是乘法)4.Ferrers图像(待学习)5.汉诺塔(hdu一系列题目,待学习) http://www.cnblogs.com/fanzhidongyzby/archive/2012/07/28/2613173.html http://blo原创 2015-02-11 21:46:20 · 1626 阅读 · 0 评论 -
指数型母函数:hdu 1521 排列组合
n个元素组成的多重集,其中a1重复了n1次,a2重复了n2次,…,ak重复了nk次,若n=n1 n2 … nk,从n个元素中取m个排列,求不同的排列数。这种问题涉及到指数型母函数。来看这道题~题目大意分别给定n个物品的数目,从中选m件的排列有多少个。解题思路指数型母函数,也叫做形式幂级数,即以前讨论的母函数和指数母函数的差别,就在于前者直接用an作幂级数的系数,而后者则是用作为幂级数的系数,且真正有原创 2015-02-09 23:30:30 · 874 阅读 · 0 评论 -
母函数:poj 1014 Dividing
题目大意告诉我们价值为1,2,3,4,5,6珠宝的个数,判断能否将珠宝依价值均分。解题思路类似整数拆分成和相等的两部分,很容易想到母函数。所谓母函数,我的理解是幂级数。我们称函数G(x)是序列a0,a1,a2,…,的母函数。通常情况下会构造母函数为多个子函数的乘积,例如这样的多项式乘积就会赋予数学意义,比如说整数拆分、分珠宝等一系列问题,1014这道题就属于母函数问题。这道题有价值1,2,3,4,5原创 2015-02-09 21:10:56 · 884 阅读 · 0 评论 -
卡特兰数:poj 2084 Game of Connections+hdu 1023
poj 2084:Game of Connections题目链接:http://poj.org/problem?id=2084解题思路:卡特兰数,打表+大数据跑Java参考代码:import java.io.*;import java.util.*;import java.math.*;public class Main { public static void main原创 2015-02-03 17:00:49 · 812 阅读 · 0 评论 -
统计区间[a,b]各个数字出现的个数:poj 2282 The Counting Problem poj 3286
组合数学中体现分析功底的基础题题目大意 给定一个区间[a,b],统计区间内0,1,2,3,4,5,6,7,8,9各个数字出现的个数。解题思路 问题转化为(0,n】区间各个数字出现的个数(最后用b减去a-1就是结果),关键是怎样去计数呢? 举个例子大家就会非常明白,以2345为例,分区间 ———— 0 0 0 1 … 1 0 0 0 … 2 0 0 0 ————原创 2015-02-07 22:41:40 · 1937 阅读 · 0 评论 -
排列数递归调用:poj 1715 Hexadecimal Numbers
题目大意: 一个串长小于等于8的十六进制字符串,第一位FEDCBA98,第二位为 FEDCBA97,给定第几位,求第i位的字符串。 注意:字符不能重复且不能有前导0解题思路: 一道比较耗时的组合数学问题,中间运用到了排列数,这里采用递归算法实现。 排列数的递归实现 然后就是记录串长从8到7、6……1字符串总数目,存于数组,方便确定输出字符串的串长最后就是查找、标记、输出了,两重循环,一重原创 2015-02-06 11:58:34 · 739 阅读 · 0 评论 -
排列组合:poj 1019 Number Sequence
比较简单的一道数学问题,关键在于要有自己的思路和代码实现,注意多位数会占多个空间(长度)。题目链接:http://poj.org/problem?id=1019参考题解:(1)小優YoU:http://blog.youkuaiyun.com/lyy289065406/article/details/6648504(2)kuangbi: http://www.cnblogs.com/kuan原创 2015-02-05 15:08:33 · 663 阅读 · 0 评论 -
组合数的递归调用:poj 1942 Paths on a Grid
题目大意:一个矩形网格grid(n*m),从左下角走到右上角,问所有可能的路径数目。解题思路:以3×4的网格为例,问题等价于从_ _ _ _ _ _ _选出4个空格为“→”,剩下3个空格为“↑”,例如:→ → → → ↑ ↑ ↑→↑ → ↑ → ↑ →… … … …!!!组合数C(n+m,m)为了减少计算,这里m取min{n,m}原创 2015-02-05 17:36:38 · 645 阅读 · 0 评论 -
排列组合:poj 1496 Word Index+poj 1850 Code
poj 1496: Word Index题目链接:http://poj.org/problem?id=1496组合数学中的排列组合问题,一一枚举即可,注意过程分析。分两种情况:第一部分是长度从1到len-1的字符串数目。如果字符串长度是5,长度为4的字符串数目为C(26,4),长度为3的字符串数目为C(26,3),以此类推,总个数为C(26,4)+C(26,3)+C(26,2)+C原创 2015-02-04 23:45:00 · 730 阅读 · 0 评论 -
STL(next_permutation)poj 1833:排列
题目链接:http://poj.org/problem?id=1833解题思路:此题用STL中的next_permutation(opt1,opt2)的排列函数能轻松解决,此函数有两个参数,opt1存放排列的数组头地址,opt2指出排列的长度,指向数组的尾地址。每运行一次函数,opt1数组存放的是原排列按字典序的下一个排列,当排列到最后一个排列时,自动跳转到第一个排列(字典序最靠前的)。本原创 2015-02-03 21:14:27 · 541 阅读 · 0 评论 -
排列数最后非零位:poj 1150 The Last Non-zero Digit
数论 组合数学(好题)题目大意: 求排列数A(n,m)最后的非零数位解题思路: 参考英文文献,多读几遍,豁然开朗,分析见功底。 http://www.cppblog.com/abilitytao/archive/2009/10/31/99907.html大体思路是这样的。A(n,m)=n!/(n-m)!首先是除去末尾的非零位,就要对每个阶乘素因子分解找到2,5的幂i,k, 求解思路详见本原创 2015-02-07 10:48:53 · 900 阅读 · 0 评论