1. C - 前缀数组 后缀数组 https://codeforces.com/contest/1706/problem/C 1.1 Problem Statement 有 $n(1 \le i \le n)$ 个建筑, 每个建筑的高度为 $h_i$ cool building: it is taller than both building $i - 1$ and building...
AtCoder Beginner Contest 260 (E)滑动窗口
1. E - 滑动窗口 https://atcoder.jp/contests/abc260/tasks/abc260_e 1.1 Problem Statement 给定整数 $M$ 和 $N$ 个整数对: $(A_1, B_1), (A_2, B_2),…, (A_N, B_N)$, 满足: $1 \le A_i \le B_i \le M$ Good Sequence: ...
Codeforces Round 722 (Div. 1) (A)Tree DP
1. 题目 https://codeforces.com/contest/1528/problem/A 有一棵包含 $n$ 个节点的树, 每个节点 $v$ 的值存在一个取值范围: $[l_v, r_v]$ 要求: 给每一个节点分配一个值, 使得整棵树的 beauty 最大 beauty 定义为: the sum of $\lvert a_u−a_v \rvert$ over all ...
AtCoder Beginner Contest 259 (F)Tree DP
1. 题目 一棵树有 $n$ 个节点, $n - 1$ 条边, 每条边连接节点 $u_i$ 和 $v_i$, 权重为 $w_i$ 现在需要从 $n - 1$ 条边中选择若干条(可以为0), 使得所有被选择的边的 权重和最大 对于每个节点(1, …, n)来说, 最多选择 $d_i$ 条邻接边 2. 分析 对于节点 v, 定义如下: $dp_{<=}[v]$:...
黑白涂色问题
1. 问题描述 给定一个无向图, 给节点染色, 要求相邻节点不能相同颜色 2. 分析 直接 dfs 黑白染色就行 3. 代码 #include <bits/stdc++.h> using namespace std; using i64 = long long; void slove() { int n; cin >> n; ...
分割数组dp
1. 类似的题目 K 次调整数组大小浪费的最小总空间 最大平均值和的分组
math
1. 阶乘 int mod = 1e9 + 7; int fact(int n) { int res = 1; for (int i = 1; i <= n; i++) { res = res * i % mod; } return res; } 2. 快速幂 int fast_pow(int a, int p) { ...
线段树 常规
1. Tips 对于常规的线段树实现来说, 都是一开始就调用 build 操作创建空树 而线段树一般以「满二叉树」的形式用数组存储, 因此需要 4 * n 的空间, 并且这些空间在起始 build 空树的时候已经锁死 2. 模板 #include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5; ...
线段树 动态开点
1. 动态开点 - 估点 int N = (int)1e9; const static int M = 4 * 1e4; struct Node { // 左右儿子的索引, 0表示还未创建 int ls, rs; // 当前区间的值 int max; // 懒惰标记 ...
珂朵莉树
1. 模板 class RangeModule { private: // 也可以用 set<pair<int,int>>, 但显然 map 更简洁一些 // 注意 key 为 right, value 为 left, 为了方便后面查找 map<int, int> mp; public: RangeModule() { ...