![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM 组合数学
New_C_YUER
这个作者很懒,什么都没留下…
展开
-
poj 2365 poj 3370
<br /> 这两道题都是鸽巢原理的经典应用。<br /> 首先简单说一下鸽巢原理,就是有n+1个球,放在n个盒子中,那么至少有一个盒子有两个或更多的球。<br /> 而这两道题正是运用了这个思想。先对数列求前N项和,有s1=a1,s2=a1+a2,<br />s3=a1+a2+a3,......,sn=a1+a2+a3+...+an。若其中有和可以整除m,那么即可得出答案,否则,所得的余数只会是1,2,...,n-1,因此,必存在至少两个数模除m后有相同余数r,即si=b*m+r原创 2011-05-14 00:35:00 · 1726 阅读 · 0 评论 -
poj 1496 poj 1850
<br /> 题目意思很明了,就是找出字符序列对应的标号,且字符的排列必须是字典序递增!<br /> 一开始是用dp,dp[i][j][k],i为首字母,j为长度,k为末字母。但过了许多测试数据后还是wa。最后看了discuss说是可以用组合数学的方法做,也的确简单很多。就是对于一个给定长度L的字符串,找出长度1到L的所有合法的组合情况。然后再减去同等长度下,排位其在后的字符串总数即可,只要用简单的C(n,m)就行了。<br /> 以下是我的代码,那个错误的dp代码就不给了,记得fo原创 2011-05-20 10:15:00 · 835 阅读 · 0 评论 -
poj 2279
<br /> http://en.wikipedia.org/wiki/Young_tableau<br /> 看了上面这篇有关钩子公式的论文后,这题就变水题了,记得用__int64 即可。如果不想看英文的话可以看黑书,在组合数学P93那部分有相关内容。此题还可以用dp来解,其实很多组合数学题都是如此,可以去看看foverlin神的blog,那里有很详细的解释。<br /> <br /> 以下是代码:<br /> <br /> #include<cstdio><br />#incl原创 2011-04-30 22:22:00 · 1501 阅读 · 1 评论 -
poj 3122
题目意思是,对给定的N个PI来分给(F+1)个人,要求每个人获得的体积一样大,形状可以不同,同时不能分给同一个人的PI是来自两个不同的PI。 二分题。上界是PI的总体积和与人数的比值。下界是0。.二分时记录可以分给的总人数cnt,若cnt>f,则分得的太少,反之则太多原创 2011-07-28 16:11:00 · 520 阅读 · 0 评论