摘要: https://www.luogu.com.cn/problem/P3258 点差分 #define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef 阅读全文
posted @ 2025-05-31 15:36 闫柏军 阅读(8) 评论(0) 推荐(0)
摘要: 单调队列: O(n)求解所有长度为len的区间最值 单调栈: O(n)求解每个元素左(右)边第一个比自己大(小)的数 阅读全文
posted @ 2025-05-27 13:23 闫柏军 阅读(8) 评论(0) 推荐(0)
摘要: 用倍增 快速求解区间最值 (GCD LCM 区间与或) 先预处理以每个点为起点的log个区间的最值 具体来说 f[i][j] 表示 [i, i + 2 ^ j]区间的最值 显然有转移 f[i][j] = max(f[i][j - 1], f[i + (1<<(j-1))][j-1]) 像区间dp一样 阅读全文
posted @ 2025-05-22 09:38 闫柏军 阅读(5) 评论(0) 推荐(0)
摘要: 一.浮点数 /因为浮点数的精度计算太过复杂,像3.14这样的数存在浮 点型变量里存的可能是3.139999999,也有可能是3.140000001, 所以不能直接用“==”判断两个浮点数是否相等。在这种情况 下,就允许判断两个浮点数为相等时,两数之间存在微小的误差, 这个“微小的误差”要取一个较小的 阅读全文
posted @ 2025-05-08 11:25 闫柏军 阅读(24) 评论(0) 推荐(0)
摘要: 单调队列 滑动窗口 code #define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e6 + 100; int a[N], 阅读全文
posted @ 2025-05-03 16:32 闫柏军 阅读(15) 评论(0) 推荐(0)
摘要: int 4字节 1MB = 2e5 int 1.状态定义: 经验积累多做题 2.状态转移: 一般以最后一次不同为划分分类转移 3.转移顺序: 需要保证所要计算的状态需要的状态已经被算出 背包等优化另说 4.初始化: 根据定义初始化 线性动态规划 数字三角形模型 数字三角形 从上走到下,max or 阅读全文
posted @ 2025-04-30 17:45 闫柏军 阅读(20) 评论(0) 推荐(0)
摘要: 堆是一颗完全二叉树,支持高效插入一个数,查找最大(小)值。 小根堆:对于任意节点u,满足u是{u,u2(左儿子),u2+1(右儿子)}中的最小元素,如何维护呢? 利用push, up操作 void down(int x) { int t = x; if (x * 2 <= sz && h[x * 2 阅读全文
posted @ 2025-03-17 18:10 闫柏军 阅读(40) 评论(0) 推荐(0)
摘要: 单点修改 区间查询 模板(维护区间和) #define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull 阅读全文
posted @ 2025-01-27 18:47 闫柏军 阅读(8) 评论(0) 推荐(0)
摘要: #define _CRT_SECURE_NO_WARNINGS #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; const int N = 3e6 阅读全文
posted @ 2025-01-25 14:45 闫柏军 阅读(10) 评论(0) 推荐(0)
摘要: 解法一 树形DP #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; const int N = 1e5 + 10; vector<int>e[N]; 阅读全文
posted @ 2025-01-24 16:08 闫柏军 阅读(23) 评论(0) 推荐(0)