哥们的算法进阶指南


图论相关

Floyd

  • 3512. 最短距离总和 - AcWing题库:这个题就是Floyd的变种,要注意Floyd中不存在负环不然最短距离可能为负无穷。还有在dp[k][i][j] = min(dp[k-1][i][j],dp[k-1][i][k] + dp[k-1][k][j]的转移公式中,和背包的三维化成二维的思想不一样,背包的是dp[k-1][i]永远不会被更新。但是Floyd中,dp[k-1][i][k],也就是dp[i][k]可能是dp[k-1][i][k]也可能是dp[k][i][k]。(因为图中不存在负环,所以可以证明:所有最短路中的任意一条每个点只经过一次,因此不管是是dp[k-1][i][k]也可能是dp[k][i][k]都可以保证是最短路,不影响。)

搜索相关

Bfs

Flood Fill

最短路模型

多源BFS

  • AcWing 173. 矩阵距离 - AcWing:多源最短路问题,在图论中解决这种问题我们一般都是引入一个超级源点,连接超级原点和这些起点,超级原点到起点的距离为0,然后从超级源点开始像所有格子bfs。每个点得到的最短距离就是答案。

最小步数模型

  • AcWing 1107. 魔板 - AcWing:这中题目就是外部的最短路模型,我们需要处理每个状态的存储,以及每个状态如何编导下一个状态的。

双端队列广搜

  • AcWing 175. 电路维修 - AcWing:这个题目很巧妙,把电路转换成了图的最短路问题,图的边有0有1,每次遍历到0就放对头,1就放队位,保证队列的双端性和单调性。

双向广搜

A*

DFS

连通性模型

顺序搜索


数论相关

质数

  • 3497. 质数 - AcWing题库
    • 第100个质数是:541;
    • 第500个质数是:3571;
    • 第1000个质数是:7919;
    • 第10000个质数是:104729;
    • 第70000个质数是:882377。

线性代数


日期相关

  • 3498. 日期差值 - AcWing题库:关于日期问题都是有模板的。第一个就是记录平年每月份有多少天的数组。第二个就是判断某一年是不是闰年。第三个就是返回某一年某一月有几天。

dp相关

数字三角形

最长上升子序列

背包问题

状态机模型

状态压缩dp

区间dp

树形dp

数位dp

单调队列优化dp

*

斜率优化dp

*


高级数据结构

并查集

线段树


破环成链相关

  • AcWing 5183. 好三元组 - AcWing:这个题目最主要的就是如果圆心不在三角形中间,那么就是三个点之间与圆心夹角只和小于180。换句话说也就是三个点在180°里面也就是数组距离小于c/2。

周赛不会题目汇总


每日一题汇总

  • 秋季每日一题汇总:
    • AcWing 5166. 对称山脉 - AcWing:这个题目是dp做出来的,dp[i][j]的含义已经想出来了,就是推导式差点想出来。
    • AcWing 5170. 二进制 - AcWing:这个题目其实前面k个二进制决定了整个长度的总数,这个规律很好找。但是就是如何根据判断给定K-
      子串数字和序列
      找到对应的前面k个二进制的数目。可以参考题解
    • AcWing 5164. 所有三角形 - AcWing:这个题目使用dfs不好判断其实就是一个简单的模拟题。我们只需要考虑上下,左右其中的一个方向,也就是我们可以只考虑上和左两个方向。只要这两个方向有黑色,那就-2.这样可以保证不重复。
    • AcWing 5183. 好三元组 - AcWing:这个题目最主要的就是如果圆心不在三角形中间,那么就是三个点之间与圆心夹角只和小于180。换句话说也就是三个点在180°里面也就是数组距离小于c/2。
    • AcWing 5179. 分组 - AcWing:Integer之间相比用equals方法不然会错
    • AcWing 5180. 正方形泳池 - AcWing:这个题目好好看看。思路就是遍历横轴和纵轴,就会满足情况。
    • AcWing 5198. 整理书籍 - AcWing:这个题目不能用逆序对做,如果交换是相邻的字母交换才可以用逆序对做。

评论