摘要:
Part 00 dp 什么时候用? 首先,如果这题数据范围一眼 BFS/DFS/暴力/随机化 可以过,那么还写 dp 干什么 但是,但你决定这题要贪心时,我建议咱还是要看一下它对不对 整一个石子合并这样的就很难受 其次,除了数位 dp 以外正常 dp 数据范围不会特别大 至少要保证 DP 数组不会 阅读全文
2025年2月3日
2025年1月24日
摘要:
斜率优化是 DP 中一个非常离谱的分支 其实斜率本身没有任何作用 (只能增加代码的阅读难度) 大部分斜率优化都利用了单调队列等数据结构求最值 从而降低代码的时间复杂度 斜率是对于直线来说的 比如在一条直线上搞两个点 (x1,y1) (x2,y2) 那么定义斜率 Slope=(y1-x1,y2-x2) 阅读全文
2025年1月23日
摘要:
ta 是邪恶的数位 dp,我的午饭终结者 (调着调着就忘记午饭了) 首先看一道例题 // 学习 www.luogu.com.cn/article/qbp4ezkk P2602 的题解 // %%% dalao Example 01 [P2602 数字统计] 求 [l,r] 中每个数字出现了多少次 ( 阅读全文
2025年1月22日
摘要:
# Part 1 RMQ RMQ,即区间信息维护问题 如最大值,最小值,GCD 等 RMQ 算法实现很多 具体有线段树,树状数组和 ST 表 但综合时间复杂度最好的是 ST 表 查询 O(1),预处理 O(n log n) ST 表的基础思想是二进制倍增 记录一个 ST[i][j] 数组记录一下从 阅读全文
2025年1月21日
摘要:
Question 01 [P3374 树状数组一] 模板题 Code #include<bits/stdc++.h> using namespace std; const int N=5e5+7; class Tree{ public: inline void scan(long long *_da 阅读全文
2025年1月20日
摘要:
# Part 01 Floyd 众所周知的水 可以求全源最短路 板子简单好写 Code for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) Distance[i][j]=min(Distance[i][j],Distance 阅读全文
2025年1月18日
摘要:
数学&数论 # 01 快速幂 一种快速求解幂的方法 (貌似是一句废话) 思路是使用二进制求解 example 11 (1011)Bin (1000)Bin (10)Bin (1)Bin 3 = 3 =3 * 3 *3 3 1 0 2 2 2 = 3 + 3 + 3 (蒟蒻作者不会 Latex ,凑合 阅读全文
2025年1月17日
摘要:
Basic 从一个图里抽取一些边使其构成一棵树,且总边权最小 Function 01 [Kruskal] 贪心算法 选取当前最小边权的边 用并查集判断该边所连的点的连通性 Question 01 [ACP2023 最短网络] 模板题 Code #include<bits/stdc++.h> usin 阅读全文
2025年1月16日
摘要:
BFS Basic 主要特点:空间复杂度较高,基于队列 经常用于求最优解的搜索题 经典模型:连通块,最短迷宫路径,曼哈顿距离 Question 01 [ACP2056 山峰与山谷] 主体是广搜模板 难点在于如何判断当前联通块是山峰或山谷 考虑在广搜时进行维护 如果 BFS 检测到的区域不是在当前连通 阅读全文
2025年1月15日
摘要:
DFS & DFS 剪枝优化 Basic 01 先搜节点少的分支 如果搜进来一个大分支而答案不在此分支就会浪费大量时间 02 可行性剪枝 已经白扯了就 return 判断当前是否合法 03 最优性剪枝 如果此分支确定不是最优解(差于已有解)就 return 04 记忆化搜索 记录之前搜过的 Data 阅读全文