随笔分类 -  { 数学 { 排列组合 } }

摘要:题目是在n*n的棋盘上放k个车使其不互相攻击的方案数。 首先可以明确的是n*n最多只能合法地放n个车,即每一行都指派一个列去放车。 dp[i][j]表示棋盘前i行总共放了j个车的方案数 dp[0][0]=1 转移就是从第i-1行转移到第i行,对于第i行要嘛放上一个车要嘛不放,放的话有n-j-1种方法 阅读全文
posted @ 2016-02-01 20:43 WABoss 阅读(231) 评论(0) 推荐(0) 编辑
摘要:题目问一个合法字符串的字典序是第几个,合法的字符串是指里面的字符严格递增。 先判断合不合法,然后用类似康托展开的过程去求。大概过程就是用组合数算出某长度某前缀有几个,累加起来。 真难一遍写对。。 1 #include<cstdio> 2 #include<cstring> 3 using names 阅读全文
posted @ 2016-02-01 15:59 WABoss 阅读(203) 评论(0) 推荐(0) 编辑
摘要:题目问区间有多少个数字的二进制0的个数大于等于1的个数。 用数学方法求出0到n区间的合法个数,然后用类似数位DP的统计思想。 我大概是这么求的,确定前缀的0和1,然后后面就是若干个0和若干个1的不重复全排列数。。 写得挺痛苦的。。另外A[i][j]表示i个0和j个1的不重复全排列数,即A[i][j] 阅读全文
posted @ 2016-02-01 11:38 WABoss 阅读(205) 评论(0) 推荐(0) 编辑
摘要:一年多前遇到差不多的题目http://acm.fafu.edu.cn/problem.php?id=1427。 一开始我还用搜索。。后来那时意外找到一个不重复全排列的计算公式:M!/(N1!*N2!*...*Nn!), 然后就靠自己YY出解法,搞了好几天,最后向学长要了数据,然后迷迷糊糊调了,终于A 阅读全文
posted @ 2016-01-16 17:42 WABoss 阅读(303) 评论(0) 推荐(0) 编辑