组合数学
Sdywolf
沃是一只蒟蒻
展开
-
51nod 算法马拉松30 A.函数【容斥】【组合数学】
Description想知道f:A->B这个函数(其中|A|=n, |B|=m)的所有映射关系要使B的每个元素都要被A的一个元素覆盖到。数字可能很大你只要输出方案数模1,000,000,007即可。题解枚举有在B中有几个元素一定被映射到了,假设B中有ii个元素一定被映射到了,那么方案就是Cim∗(m−i)nC_m^i*(m-i)^n,考虑容斥来统计答案,所以答案就是∑mi=0Cin∗(m−i)n∗(原创 2017-10-28 20:02:31 · 394 阅读 · 0 评论 -
51nod 1122 机器人走方格 V4【组合数学】【矩阵乘法】
Description四个机器人a b c d,在2 * 2的方格里,一开始四个机器人分别站在4个格子上,每一步机器人可以往临近的一个格子移动或留在原地(同一个格子可以有多个机器人停留),经过n步后有多少种不同的走法,使得每个毯子上都有1机器人停留。由于方法数量巨大,输出 Mod 10^9 + 7的结果。题解每个位置都是等价的,可以通过求解从第一个位置到另外的位置的方案数,然后枚举最后每个机器人的位原创 2017-11-09 13:41:35 · 400 阅读 · 0 评论 -
51nod 1486 大大走格子【组合数学】【DP】
Description有一个h行w列的棋盘,里面有一些格子是不能走的,现在要求从左上角走到右下角的方案数。题解考虑一个n∗mn*m的矩阵,从左上角走到右下角的方案数为Cn−1n+m−2C_{n+m-2}^{n-1}。发现直接求答案很难,运用补集思想,只要求出经过了障碍的方案书就可以了,定义f[i]f[i]表示排序后从左上角走到第i个障碍,如果从左上角走到i的路上没有其他的障碍的话,显然可以直接求,如原创 2017-10-24 19:54:47 · 621 阅读 · 0 评论 -
51nod 1627 瞬间移动【组合数学】
Description有一个无限大的矩形,初始时你在左上角(即第一行第一列),每次你都可以选择一个右下方格子,并瞬移过去(如从下图中的红色格子能直接瞬移到蓝色格子),求到第n行第m列的格子有几种方案,答案对1000000007取模。 题解枚举走的步数,直接搞。代码#include<cstdio> #include<cstring> #include<algorithm> #define tt 10原创 2017-10-25 10:16:40 · 448 阅读 · 0 评论