Leopold's Blog
模板总结 模板总结
一般笔试题的时间限制是1秒或2秒,操作次数需要控制在 $<=10^8$。 $n \leq 30$, 指数级别, $dfs$+ 剪枝, 状态压缩dp $n \leq 100$ => $O\left(n^{3}\right)$,
区间DP 区间DP
区间dp看到题有什么特点可以用区间dp? 提示1 时间复杂度可以O(n^2)-数组长度≤1000 提示2 状态转移与两端有关 区间dp应该怎么思考 提示1 递归回溯型思考 提示2 类似递归回溯 左右子区间f
数位DP 数位DP
数位dp模板typedef long long ll int k[n.length]; //n的10/2进制上界数组 ll dp[n.length]; //记忆化数组 ll dfs(int pos,int
codeforces codeforces
codeforces思维题1450A要求字符串的子序列中不包含”trygub” 如何快速解? trygub是非正序的,所以只要我们对字符串进行排序就可以得到满足要求的字符串
网络流 网络流
1. 基本概念 1.1 流网络,不考虑反向边 源点-流量无限的海 图的边-河流容量c(u,v) 图节点-河流交汇处 1.2 可行流,不考虑反向边 定义的流量f(
状压DP 状压DP
看到题目有什么特点可以用状压? 提示1 集合类状压 可以用比较少(小于30)的集合表示当前某些数/物品 用(多少)/没用 的状态 提示2 连通类状压 棋盘/树(长或宽小于30)中按某种规则放置固定长度的 物品 集合类状态
贪心 贪心
贪心55跳跃游戏(可达性)/45跳跃游戏2(最小步)55 可达性维护一个rmax class Solution: def jump(self,nums): rmax = 0 n = len(nums)
lucas定理 lucas定理
卢卡斯定理 $Lucas Theory O(log_{p}Nplogp)$acwing887求组合数3 C_{a}^{b} ≡ C_{amodp}^{bmodp}C_{\frac{b}{p}}^{\frac{a}{p}}(mod{~}p)
链表 链表
class ListNode: def __init__(self, x): self.val = x self.next = None 92反转链表2pre:开始反转的前一个节点 cur:原链表当前
单调栈 单调栈
单调栈Leetcode 84柱状图中的最大矩形 找到每个柱形条左边和右边最近的比自己低的矩形条,然后用宽度乘上当前柱形条的高度作为备选答案。 此类问题的经典做法是单调栈,维护一个单调递增的栈,如果当前柱形条i 的高度比栈顶要低,则栈顶元素
C++ C++
遍历unordered_map leetcode 49字母异位词分组 class Solution { public: vector groupAnagrams(vector& strs) {