
sdut
johsnows
正在静下心来学算法的acmer
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第八届山东省赛 C sdut 3895 fireworks(组合数+逆元)
题意: 一个烟花(位置为x)每秒爆炸并往两边(x-1,x+1)分裂成两部分,不断循环。给你n个位置,每个位置上有c个烟花,问t秒后,w位置上有多少个烟花。 解题思路: 容易推出对于一个烟花来说,t秒后周围的烟花数量分部就是杨辉三角的t+1行,不过每两个数之间要多一个0. n的上限1e5,不能打出杨辉三角需要o(n^2)的时间显然是不行的。 所以我们只能直接求组合数,求的时候除法取原创 2017-05-10 12:37:27 · 479 阅读 · 0 评论 -
山东省第八届省赛 sdut 3896(找规律+组合数取模)
题意: 如图让你求从(1,1)到(A,B)有多少种方案。 解题思路: 设向左走l步,向下走r步,向下走c步,我们枚举c,当c确定的时候,l和r也同时确定了,然后求一下l,r,c的排列数(l+r+c)!/(l!*r!*c!)就好了。 需要预处理阶乘的逆元。 具体见代码: #include #define LL long long using n原创 2017-05-10 16:53:48 · 640 阅读 · 0 评论 -
第七届山东省赛 Feed the monkey(dp)
题意: 给出a,b,c三种物品,每种物品有A,B,C件,将所有的物品排成一列,每种物品不能连续出现aa,bb,cc次,问有多少种排列方式。 解题思路: 很明显的dp,但是转移不好想。 首先我们需要思维i,j,k,l分别表示当前用了i件a,j件b,k件c,序列末尾是第l种物品,dp[i][j][k][l]就表示这个状态有多少种排列方式。l是不可少的,只用三维的话怎么也做不对。原创 2017-06-03 19:28:01 · 417 阅读 · 0 评论