摘要: 算数级数:与末项平方同阶 T(n) = 1+2+…+n = n(n+1)/2 = O(n2) 幂方级数:比幂次高出一阶 T2(n) = 12 + 22 + 32 + … + n2 = n(n+1)(2n+1)/6 = O(n3) T3(n) = 13 + 23 + 33 + … + n3 = n2( 阅读全文
posted @ 2017-06-01 00:18 Elpsywk 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 法一:暴力$O({n^2})$看脸过 法二:map优化,存储sum数组的下标,复杂度$O(n\log n)$ 法三:二分复杂度$O(n\log n)$,特别注意二分时的判断条件,很容易出错,idx和sum不可以一起判断,只能判断完sum,再独自判断idx,否则答案会出错 阅读全文
posted @ 2017-05-29 18:39 Elpsywk 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 解题关键:注意为什么上界是$\sqrt {2n} $ 因为函数是关于m的递减函数,而结果必须为正整数 $a = \frac{{2n + m - {m^2}}}{{2m}} = \frac{n}{m} + \frac{1}{2} - \frac{m}{2}$ 将$\sqrt {2n} $带入,结果为$ 阅读全文
posted @ 2017-05-29 16:02 Elpsywk 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 算法复杂度: 复杂度计算出来后有什么用? 估计程序能否在规定时间内处理题目指定规模的数据 ACM有时间限制1s “规模”的举例 1.给N个数排序 规模:N 2.判断字符串P是否是字符串T的子串 规模:串的长度|P|和|T| 3.判断一个整数是否属于整数集合S 规模:|S| 要判断多少次(查询次数) 阅读全文
posted @ 2017-05-29 14:52 Elpsywk 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 解题关键:数位dp,对每一位进行考虑,通过过程得出每一位上1出现的次数 1位数的情况: 在解法二中已经分析过,大于等于1的时候,有1个,小于1就没有。 2位数的情况: N=13,个位数出现的1的次数为2,分别为1和11,十位数出现1的次数为4,分别为10,11,12,13,所以f(N) = 2+4。 阅读全文
posted @ 2017-05-29 00:41 Elpsywk 阅读(382) 评论(0) 推荐(0) 编辑
摘要: 解题关键:因为数字都为正整数,所以a[i]-i小于0一定需要修改,不须考虑; 从剩余的a[i]-i中找出LIS的数目,这是不需要修改的数目,总个数减去该数目,即为所求 阅读全文
posted @ 2017-05-28 16:57 Elpsywk 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 解题关键: 1、此题用dp的方法可以看出,dp矩阵为杨辉三角,通过总结,可以得出 答案的解为$C_{n + m - 2}^{n - 1}$ 2、此题可用组合数学的思想考虑,总的步数一共有$n+m-2$步,在这所有的步数中,需要选择向下走的步数的位置,由此可得,答案的解为:$C_{n + m - 2} 阅读全文
posted @ 2017-05-28 02:56 Elpsywk 阅读(204) 评论(0) 推荐(0) 编辑
摘要: 解题关键:此题有多种解法 三条直线组成的矩阵delta为0,则共面,否则,不共面 Gauss消元法 阅读全文
posted @ 2017-05-28 00:56 Elpsywk 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 给定两个点: typedef struct { double x, y; } Point; Point A1,A2,B1,B2; 首先引入两个实验: a.快速排斥实验 设以线段A1A2和线段B1B2为对角线的矩形为M,N; 若M,N 不相交,则两个线段显然不相交; 所以:满足第一个条件时:两个线段可 阅读全文
posted @ 2017-05-28 00:22 Elpsywk 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 解题关键:此题不需要模拟,可以用数学方法解决。 无论是用链表实现还是用数组实现都有一个共同点:要模拟整个游戏过程,不仅程序写起来比较烦,而且时间复杂度高达O(nm),当n,m非常大(例如上百万,上千万)的时候,几乎是没有办法在短时间内出结果的。 为了讨论方便,先把问题稍微改变一下,并不影响原意: 问 阅读全文
posted @ 2017-05-27 23:21 Elpsywk 阅读(104) 评论(0) 推荐(0) 编辑