• 算法 - 最长上升子序列 II

    来源: https://www.acwing.com/problem/content/description/898/ 描述: 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 个人觉得思路不算是动态规划,应该算是贪心: 如果w[i] > f[cnt] 的,那么...
  • 算法 - 最长上升子序列

    来源: https://www.acwing.com/problem/content/description/897/ 题目描述: 给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。 首先要求几个东西,一个是状态状态分析,一个是状态计算。状态分析就是提出一种暴力的解决方式,...
  • 算法 - 最长公共子序列

    来源: https://www.acwing.com/problem/content/description/899/ 描述: 给定两个长度分别为N和M的字符串A和B,求既是A的子序列又是B的子序列的字符串长度最长是多少。 dp分析: 首先确定状态f[i][j], 因为是两个字符串,所以...
  • 算法 - 石子合并

    来源: https://www.acwing.com/problem/content/284/ 描述: 设有N堆石子排成一排,其编号为1,2,3,…,N。 每堆石子有一定的质量,可以用一个整数来描述,现在要将这N堆石子合并成为一堆。 每次只能合并相邻的两堆,合并的代价为这两堆石子的质量之和,...
  • 算法 - 编辑距离

    来源: https://www.acwing.com/problem/content/901/ 描述: 给定n个长度不超过10的字符串以及m次询问,每次询问给出一个字符串和一个操作次数上限。 对于每次询问,请你求出给定的n个字符串中有多少个字符串可以在上限操作次数内经过操作变成询问给出的字符...
  • 算法 - 双指针算法

    双指针算法是从暴力中优化,根据题目要求的某种性质进行优化。快排, 归排都用了双指针算法。把具有某种性质给提出来。简化时间复杂度的方法。 比如这样一道题目: 给定一些字符串,中间以空格隔开,输出每个字符串。 12345678for(int i = 0, j = 0; i < n; i++...
  • 算法 - 位运算

    常见的两种操作,一个是找第几位的值是几,一个是找最后一个1是多少lowbit。 找第几位的值是几: 向右边移动k为然后进行与运算。 x >> k & 1 lowbit操作: x & -x, -x等于反码+1 来源: https://www.acwing.com/...
  • 算法 - 前缀和与差分

    前缀和唯一作用就是对一段区间方便求和。差分是前缀和的逆运算 前缀和 一维数组前缀和: 规定: s[i] = a[1] + a[2] + a[3] ... + a[i] 所以, 方便求和 a[i] ~ a[j] : s[j] = a[1] + a[2] + a[3] ... + a[i...
  • 算法 - 二分法

    二分法比较重要,然后又一定的模板。在此基础上可以进行一系列的修改,然后达到题目要求。需要注意有几个地方,二分法容易出错。 整数二分 二分法分整数二分和浮点数二分。 二分法使用的范围: 是以一个点,满足一个性质,可以把一个区间分成两个部分。这个性质可以是单调性也可以是其他的性质。 两个模板可...
  • Django - 部署到Linux服务器

    首先进行文件的打包: 1pip freeze > requirements.txt 然后创建服务器, 进行ssh登录。 在服务器操作如下: 12345678910111213141516171819202122232425262728293031323334353637383940414...