摘要: 基础 标准头文件等前置模板 语法基础:函数、指针、引用、结构体、类、速通Python 算法基础:模拟、递归、回溯、递推、贪心、二分(整体二分)、三分 排序:选择排序、冒泡排序、插入排序、快速排序、归并排序、桶排序、基数排序、堆排序、希尔排序 高精度整数、位运算、时空复杂度分析 离散化、前缀和和差分、 阅读全文
posted @ 2020-09-15 11:23 purinliang 阅读(1697) 评论(0) 推荐(0) 编辑
摘要: 定义 欧拉回路Eulerian Cycle:通过图中每条边恰好一次的回路 欧拉通路Eulerian Path:通过图中每条边恰好一次的通路 欧拉图:具有欧拉回路的图 半欧拉图:具有欧拉通路但不具有欧拉回路的图 欧拉图中所有顶点的度数都是偶数。 若 G 是欧拉图,则它为若干个环的并,且每条边被包含在奇 阅读全文
posted @ 2024-06-08 09:28 purinliang 阅读(142) 评论(0) 推荐(0) 编辑
摘要: LeetCode 741. 摘樱桃 https://leetcode.cn/problems/cherry-pickup/description/ LeetCode 1463. 摘樱桃 II https://leetcode.cn/problems/cherry-pickup-ii/descript 阅读全文
posted @ 2024-05-07 00:52 purinliang 阅读(8) 评论(0) 推荐(0) 编辑
摘要: Reduce (C++17) ll s = reduce(a + 1, a + 1 + n); // 求和 ll s = reduce(a + 1, a + 1 + n, std::plus<ll>); // 求和 double s = reduce(a + 1, a + 1 + n, std::m 阅读全文
posted @ 2024-05-03 11:50 purinliang 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 二分答案的复杂度log(ans),check的复杂度一般至少是O(n)(甚至是nlogn),那么q次询问的复杂度就是 \(O(q*log(ans)*n)\) q通常与n同规模。如果把询问合并到一起回答,就可以优化复杂度,这也是整体二分的不一样之处。总的来说,对整个ans的值域像线段树一样进行递归,每 阅读全文
posted @ 2024-04-25 20:33 purinliang 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 想着一直都没有写过三分的模板,每次都是用for循环收尾,习惯确实不太好。 三分法求先增后减或者先减后增函数的最值。其实都没必要是上凸或者下凸的函数。 下面是每次缩减1/3长度的写法,比较容易理解,面对负数等情况也不容易出问题。 // x = 4, f(x) = 20 ll f (ll x) { re 阅读全文
posted @ 2024-04-20 17:49 purinliang 阅读(7) 评论(0) 推荐(0) 编辑
摘要: 最大公因数(GCD) 两个数的最大公因数很好做,使用内置的库函数即可,注意x和y的类型要相同。 ll gcd = __gcd (x, y); 如果要求多个数的最大公因数,那么初始化为0(因为根据定义,0和任何数x的gcd都是x,所以0是gcd操作的幺元),然后分别进行gcd即可。 ll gcd = 阅读全文
posted @ 2024-04-14 13:05 purinliang 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 父级页面:【数学】组合数学 卡特兰数 记号为 \(H_n\) 第n个卡特兰数,下面的n就是指这个。 \(H_0=1, H_1=1, H_2=2, H_3=5, H_4=14, H_5=42\) 卡特兰数最常见的场景是合法的括号序,还有栈进出的方案。他们的特点就是“右括号”、“出栈”的次数不能超过剩余 阅读全文
posted @ 2024-04-12 12:05 purinliang 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 父级页面:【数学】组合数学 排列 组合 可重排列 可重组合 隔板法 盒子可以为空 隔板法:x个相同的小球,有y个不同的盒子,每个盒子可以为空,求有多少种方案数?把y个不同的盒子视作y-1个不同的隔板,然后把小球视作不同的,全排列有 \(A_{x+y-1}^{x+y-1}\) 种,然后除以隔板的全排列 阅读全文
posted @ 2024-04-12 12:03 purinliang 阅读(47) 评论(0) 推荐(0) 编辑
摘要: 问题描述 给出 \(n + 1\) 个二维平面上的点对 \((x_0, y_0), (x_1, y_1), (x_2, y_2), \cdots, (x_{n}, y_{n})\) ,求一个经过这些点的不超过 \(n\) 次的多项式 \(P(x) = p_{n} \cdot x^{n} + p_{n 阅读全文
posted @ 2024-04-10 20:57 purinliang 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 树的重心的定义是,对树中的某个点,以这个点为根,然后它会拥有若干棵子树,取出最大的那棵子树的size,然后在所有点中求最小的最大的子树的size的点,这个点就是树的重心。简单来说就是找到某个点r,去掉r之后,每棵子树是长得最平均的。树的重心最多有2个(这时候重心其实是在这两点之间的边上),最少有1个 阅读全文
posted @ 2024-04-10 07:14 purinliang 阅读(114) 评论(0) 推荐(0) 编辑