摘要: 证明如下:系数可取值1,2,4,..2^(k-1),n[i]-2^k+1, k是使得n[i]-2^k+1>=0的最大整数前n项和为2^k-1,那么最后一项为 n[i]-2^k+1这些系数之和为n[i],且0--n[i]间的每一个整数均可以用若干个系数的和表示证明如下:①先证明区间0..2^k-... 阅读全文
posted @ 2015-02-07 17:58 justPassBy 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 有n种物品和一个容量为v的背包,每件物品可以无限使用, 3 第i件物品的费用为c[i],价值为w[i],求解哪些物品装入背包 4 费用不超过背包容量且价值总和最大 5 基本思路是dp[i][j] = max{dp[i-1][j-k*c[i]] k*c[i]v24 就是25 for(i... 阅读全文
posted @ 2015-02-07 14:14 justPassBy 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 1 /* 2 有n个物品和一个容量为V的背包,第i件物品的费用是c[i],价值是w[i] 3 求解哪些物品装入背包使价值总和最大 4 dp[i][j] dp[i][j] 为前i件物品放进容量为j的背包的最大价值 5 dp[i][j] = max(dp[i-1][j],dp[i-1][j... 阅读全文
posted @ 2015-02-07 11:38 justPassBy 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 位运算优先级:~>&^|常用运算:置位(set bit)将第bit位置为1A |= 1>bit&1)!=0取最后一个非0位A&-A 原理是:A=0000 0100 -A是将A按位取反然后+1,那么就相当于以最后一个1为分界线,左边全部取反,分界线及其往右是不变的A&((~A)+1)统计非0位fo... 阅读全文
posted @ 2015-02-06 16:18 justPassBy 阅读(462) 评论(0) 推荐(0) 编辑
摘要: 要求找出范围内含有“13”且能被13整除的数字的个数可以使用数位dpdp[i][j][0] 表示长度为i,余数为j,不含13的数字的个数dp[i][j][1] 表示长度为i,余数为j,3开头的数字的个数dp[i][j][2] 表示长度为i,余数为j,含有"13"的数字的个数index[1] = 1;... 阅读全文
posted @ 2015-02-06 15:30 justPassBy 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 int dp[10][3]; 4 int num[10]; 5 /* 6 dp[i][0] 不含62,4 7 dp[i][1] 2开头 8 dp[i][2] 含62或4 9 */10 void init()11 {12 int i;13... 阅读全文
posted @ 2015-02-06 15:08 justPassBy 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 给定一个数n,判断1-->n有多少个数字含“49”可以用dp的方式来解决,dp[i][0] 表示长度为i,不含"49"的数字的个数dp[i][1] 表示长度为i,第i位为数字9的个数dp[i][2] 表示长度为i,含”49“的数字的个数所以,dp[i][0] 的包含dp[i][1]的状态转移方程如下... 阅读全文
posted @ 2015-02-05 19:00 justPassBy 阅读(477) 评论(0) 推荐(0) 编辑
摘要: 其实最终的结果无非是中间8个方块是相同的颜色,外面16个方块是另外两种颜色。那么其实可以把外面两种颜色看作是0,中间的颜色看做是1。那么题目就变成了把那种颜色看做1,而其它两种颜色看做0,可以用最少的步骤得到结果。那么24个方块就可以用24位二进制来标记。那么判重的方式找到了,映射为一个int类型的... 阅读全文
posted @ 2015-02-02 14:19 justPassBy 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 康托展开:给定一个排列(由n个数排列而成),我们可以计算出该排列在由n个数组成的所有排列中排名第几(按字典序),这就是康托展开。比如由4个数1,2,3,4组成排列那么2413在所有的排列中排第几呢?首先计算第一位数字比2小的排列有多少种,即 1 * fac[3],怎么得来的呢?首先比2小的数字只有1... 阅读全文
posted @ 2015-02-01 22:46 justPassBy 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 求出n的倍数m,要求m使用的不同数字最少,且最小。一开始不知道怎么搜,因为不知道m由多少个不同的数字组成。然后百度了一下,看到和数论有关。m可能使用的数字的个数可能为一个或者两个a,aa,aaa....n+1个a, 将这些数%n,那么肯定有两个余数相等,抽屉原理。那么这两个数相减,得到的数肯定是n的... 阅读全文
posted @ 2015-02-01 12:58 justPassBy 阅读(371) 评论(0) 推荐(0) 编辑