算法
文章平均质量分 74
一个爱浪费时间的人
一头会咬人的狮子并不可怕,可怕的是这头狮子懂得隐忍
展开
-
动态规划(四)-划分型动态规划
一.例1.LintCode 513 Perfect Squares题意:给定一个正整数n,问最少可以将n分成几个完全平方数(1,4,9…)之和例子:输入:n=13,输出:2(13=4+9)1.确定状态最后一步:关注最优策略中最后一个完全平方数j²最优策略中n-j²也一定被划分成最少的完全平方数之和需要知道n-j²最少被分成几个完全平方数之和,原来求n最少被分成几个完全平方数之和子问题状态:设f[i]表示i最少被分成多少个完全平方数之和划分一般都是设定成二维数组,比如f[i][j],前原创 2020-12-29 17:02:52 · 671 阅读 · 0 评论 -
动态规划专题
一.leetcode1.LeetCode403-青蛙过河题意一堆石头,给定一个数组stones,代表着石头的位置列表,青蛙在第一个石头上,第一个石头规定只能跳一个单位,青蛙上步跳k单位,那么规定下一步只能跳k-1,k,k+1单位,问青蛙是否可以跳到最后一个石头上(青蛙只能向前跳,不能向后跳)例子:输入:0,1,3,5,6,8,12,17输出:trueA.思考明显的一道动态规划的一道题,当然也可以用dfs来做,不过数组长度上限是4位数,不剪枝肯定会超时,所以这里我们用动态规划来做是原创 2020-12-09 15:06:45 · 224 阅读 · 0 评论 -
动态规划(三)-序列型动态规划
一.序列型动态规划概述1.序列型动态规划特点给定一个序列动态规划方程f[i]中的下标i表示前i个元素a[0]、a[1]、…a[i-1]的某种性质坐标型的f[i]表示以ai为结尾的某种性质初始化中,f[0]表示空序列的性质坐标型动态规划的初始条件f[0]就是指以a0为结尾的子序列的性质2.例1(LintCode 516 Paint House II)题意:有一排N栋房子,每栋房子要漆成K种颜色中的一种,任何两栋相邻的房子不能漆成同样的颜色,房子i染成第j种颜色的花费是cos原创 2020-12-07 15:00:10 · 882 阅读 · 0 评论 -
动态规划(七)-博弈型动态规划
一.博弈型动态规划的概念博弈为两方游戏一方先下,在一定规则下依次出招如果满足一定条件,则一方胜目标:取胜先手:先出招的一方出招后,先手换人,新的先手面对一个新的局面例1 Coins in a Line(LintCode 394)题意:有一排N个石子,Alice,Bob两人轮流取石子,每次一个人可以从最右边取走一个或两个石子,取走最后石子的人胜,问先手Alice是否必胜(先手必胜:true,先手必败:false)例子:输入:N=5,输出:true(先手取走2个石原创 2020-08-18 14:47:54 · 1146 阅读 · 0 评论 -
邻接表 图的存储结构
算法 邻接表 图论原创 2016-08-25 16:12:57 · 1304 阅读 · 0 评论 -
最短路径
算法 最短路径原创 2016-08-22 14:10:43 · 1297 阅读 · 2 评论 -
树状数组粗略讲解
优势:对于普通数组,其修改的时间复杂度位O(1),而求数组中某一段的数值和的时间复杂度为O(n),因此对于n的值过大的情况,普通数组的时间复杂度我们是接受不了的。在此,我们引入了树状数组的数据结构,它能在O(logn)内对数组的值进行修改和查询某一段数值的和。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其原创 2016-08-12 08:32:36 · 427 阅读 · 0 评论 -
快速排序讲解(粗略)
快速排序由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 比起的最基础的冒泡排序,选择排序这两种排序来说,快得不止一星半点,就时间复杂度来说,快排的平均时间复杂度是n*logn...原创 2016-04-25 21:38:04 · 1144 阅读 · 0 评论 -
回文串(Manacher)算法粗略讲解
回文串 Manacher 算法原创 2016-08-10 17:15:31 · 845 阅读 · 0 评论 -
kmp算法粗略讲解
kmp 算法原创 2016-08-10 16:08:53 · 645 阅读 · 0 评论 -
LCS 最大公共序列算法粗略讲解
算法 LCS dp 动态规划原创 2016-08-09 14:16:40 · 501 阅读 · 0 评论 -
最长上升子序列LIS算法粗略讲解
LIS 二分查找 LIS dp 动态规划原创 2016-08-09 14:51:38 · 995 阅读 · 1 评论 -
并查集(Union-Find)粗略介绍
并查集 算法 数据结构原创 2016-08-08 09:27:19 · 1954 阅读 · 1 评论 -
ios::sync_with_stdio(false)详解
ACM 技巧转载 2016-08-07 20:02:03 · 29879 阅读 · 14 评论 -
最小生成树讲解
最小生成树 克鲁斯卡尔算法 普里姆算法原创 2016-08-18 16:00:23 · 1564 阅读 · 3 评论