组合数学
帐下幕僚
我只是一个普普通通的大学学生,我来到这里是想获得我在学校所不能得到的知识。
展开
-
hdu4746 Mophues(莫比乌斯反演)-好题
hdu 1695 http://blog.csdn.net/abc13068938939/article/details/52198163 BZOJ 2301 http://blog.csdn.net/abc13068938939/article/details/52201090 BZOJ 2818 http://blog.csdn.net/abc13068938939/article/d原创 2016-08-17 16:06:39 · 384 阅读 · 0 评论 -
poj1360(完全背包+多重背包+鸽巢原理)
题意,fj去买价格为t的物品, shopkeeper只接受n种货币,价值分别vi,对于每种货币fj有ci个,但 shopkeeper都有无数个这种货币。求最少使用多少货币完成交易。 对于fj,进行一次多重背包, 对 shopkeeper,进行一次完全背包。 最重要的是要考虑上界, 鸽巢原理: fj最多支付maxv*maxv+t, shopkeeper最多找零maxv *maxv。 证明:原创 2016-08-24 11:38:13 · 441 阅读 · 0 评论 -
hdu1695gcd(Mobius反演)
莫比乌斯反演的两种形式,书上一般只介绍第一种。 这道题用的是第二种。 f(k)是1<=x<=b,1<=y<=d中gcd(x,y)==k的个数 F(k)是1<=x<=b,1<=y<=d中gcd(x,y)是k的倍数的个数 F(k)=(b/k)*(d/k)。 并且这道题转化为 f(k) =f(1)是1<=x<=b/k,1<=y<=d/k中gcd(x,y)==1的个数 也就是求f(1)=s原创 2016-08-13 10:54:51 · 660 阅读 · 0 评论 -
HYSZB PROBLEM B(mobius反演+分块+容斥原理)
这道题和hdu1965思路基本类似, http://blog.csdn.net/abc13068938939/article/details/52198163 mobius反演得出的结果是(过程在上面的博文中有介绍) 1< =i< =m和1< =j< =n中gcd(i,j)=k的个数 令m~=m/k, n~=n/k。且不妨设m < = n。f(1)=Sigma(d=1 : m) u(d)*原创 2016-08-13 19:28:15 · 367 阅读 · 0 评论 -
SPOJ PGCD(mobius反演+分块+线性筛)
这道题T了,看了大神代码才知道我把这道题想得太简单了,思路基本上是下面这个博客的。 神牛博客 首先第一步,求的是1< =i< =m,1<= j< =n,gcd(i,j)为素数的个数 枚举小于m且小于n的素数p。 然后转化为求1< =i< =m,1<= j< =n,gcd(i,j)为p的个数, (这个就是hdu1695所求的, 解法详见http://blog.csdn.net/abc130原创 2016-08-13 22:12:58 · 402 阅读 · 0 评论 -
hdu5698瞬间移动
两种做法: 一:枚举步数x,那么从(1,1)到(n,m)就可以看成从行1到n走了x步,从列1到m走了x步。这两个过程是独立的。所以只要将1到n走了x步的路线数乘以1到m的路线数就是(1,1)到(n,m)走x步的路线数。 问题简化为1到n走x步的路线数怎么求。 1到n路线的最小单元就是从i到i+1的路线,总共有n-1个这样的单元。 那走x步就相当于把这n-1个单元组成x个各自连续的区间段。原创 2016-09-20 19:44:59 · 306 阅读 · 0 评论 -
cf451e Devu and Flowers(容斥原理)
首先考虑无限制的情况,则它就相当于 求Sigma(li)=s的方案,用隔板法可以得 C(s + n -1 , n - 1)。 假设只有两个花瓶, 则 容斥 : 无限制 - 花瓶1超限制花瓶2无限制 - 花瓶1无限制花瓶2超限制 + 花瓶1,2均超限制 即 C(s + n - 1,n - 1) - C(s - f1 - 1 + n - 1,n - 1) - C(s - f2 - 1 +原创 2016-12-14 20:41:25 · 369 阅读 · 0 评论 -
hdu5514Frogs(容斥原理)
显然,第 i 只青蛙能跳过的石头的 id = k*gcd(a[i],m)。所以题目就是相当于求 0 ~ m - 1 这些数中至少是一个 a[i] (a[i]|m) 的倍数。 0 ~ m - 1 这些数中是 d (d|m) 的倍数的和为 d * m/d * (m/d - 1) / 2 。 但是,这样计算必然会重复。 先把 m 的因数求出来,最多不多于300个,再把是 a[i] 倍数的因数标记(原创 2017-02-12 00:03:50 · 348 阅读 · 0 评论