摘要:
N是完全平方数 N有奇数个约数设:N = n*n充分性:1、N=1时,N的约数为1,为奇数2、N>1时,1.....n......N,其中 1, n, N为N的3个约数。若在1~n之间存在另外一个约数m1,则在n~N之间必存在约数N/m1,同理,有m2,则存在N/m2,即必有 (3 + 偶数)个,... 阅读全文
摘要:
我以此题为例,详细分析01背包问题,希望该题能够为大家对01背包问题的理解有所帮助,对这篇博文有什么问题可以向我提问,一同进步^_^饭卡Time Limit: 5000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Tot... 阅读全文
摘要:
对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,这篇文章就是为了帮助大家理解动态规划,并通过讲解基本的01背包问题来引导读者如何去思考动态规划。本文力求通俗易懂,无异性,不让读者感到迷惑,引导读者去思考,所以如果你在阅读中发现有不通顺的地方,让... 阅读全文
摘要:
蓝桥杯 枚举 奇怪的分式标题:奇怪的分式 上小学的时候,小明经常自己发明新算法。一次,老师出的题目是: 1/4 乘以 8/5 小明居然把分子拼接在一起,分母拼接在一起,答案是:18/45 (参见图1.png) 老师刚想批评他,转念一想,这个答案凑巧也对啊,真是见鬼! 对于分子、分母都是 1~9 中的... 阅读全文
摘要:
问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格式输入... 阅读全文
摘要:
对于求逆序数问题,学会去利用树状数组进行转换求解方式,是很必要的。一般来说我们求解逆序数,是在给定一串序列里,用循环的方式找到每一个数之前有多少个比它大的数,算法的时间复杂度为o(n2)。那么我们通过树状数组可以明显提高时间效率。我们可以按照排列的顺序依次将数字放入树状数组中,并依次更新预与之相关联... 阅读全文
摘要:
Super Jumping! Jumping! Jumping!首先对于动态规划问题要找出其子问题,如果找的子问题是前n个序列的最长上升子序列,但这样的子问题不好,因为它不具备无后效性,因为它的第n+1的数会影响前n个序列的长度,换句话说,如果第n+1个数加上去不一定使得和前n个数加起来就是最长子序... 阅读全文
摘要:
我们用递归+记忆化的方法来解决普通整数划分问题:定义 f(n,m)为将整数n划分为一系列整数之和,其中加数最大不超过m。得到下面的递推关系式:当n==1 || m==1 只有一种划分,即 1 或者 1+1+1......+1当m>n 显然,等价于 f(n,n)当m==n 此时:我考虑加数包含m与否的... 阅读全文
摘要:
将一个3*n的矩形用1*2的矩形填充,n为奇数时一定不能被填满,n*3%2==1接下来处理这个问题我们要从简单的情况开始考虑,所谓递归就是要能将问题的规模不断减小,通过小问题的解决最后将复杂问题解决。如果是3*2的情况仅有3种可能那么我们来考虑3*4的矩形是否一些就是有这两个3*2的矩形拼接在一起的... 阅读全文
摘要:
树状数组(Binary Indexed Tree(BIT), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值。这种... 阅读全文