摘要: codeforces P1987C 给定一个n长度的数组,每一步都要遍历整个数组。如果某个元素是末尾元素或是比其后一个元素大,则该元素减去1直到该元素为0,求解总步数,算法复杂度要求 \(O(n)\) 先给出暴力解法,复杂度 \(O(n^2)\): int t = 0; do{ for(int i 阅读全文
posted @ 2024-07-23 22:58 聂玄HankNie 阅读(11) 评论(0) 推荐(0) 编辑
摘要: 后缀表达式 一、定义 1、中缀表达式。 中缀表达式是人类善于、也是最常用的一种表达式形式,通常被描述为 \(A\) \(op\) \(B\),其中 \(op\) 为运算符。 例如:\(1-(3+2)*2\) 就是一种较复杂的中缀表达式。 2、后缀表达式。 后缀表达式是计算机最能理解的表达式形式。由于 阅读全文
posted @ 2021-09-06 18:32 聂玄HankNie 阅读(555) 评论(0) 推荐(0) 编辑
摘要: BSOJ1306【算法竞赛】约数之和 求 \(A^B\) 的所有约数之和 \(mod\) 9901的值 由整数唯一分解定理可知: \(A=p_1^{k_1}\cdot p_2^{k_2}\cdot ...\cdot p_i^{k_i}\) 那么 \(A=p_1^{B\cdot k_1}\cdot p 阅读全文
posted @ 2021-09-05 11:01 聂玄HankNie 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 决策单调性 一、决策单调性 1、定义。 定义:状态转移方程中,记 \(p[i]\) 为令 \(F[i]\) 取到最值的转移位置 \(j\) 的值(即 \(p[i]\) 是 \(F[i]\) 的最优决策),若 \(p\) 数组在 \([1,N]\) 单调非降,则称 \(F\) 具有决策单调性。 2、双 阅读全文
posted @ 2021-08-27 22:02 聂玄HankNie 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 线段树 一、线段树 1、线段树: 线段树是算法竞赛中常用来维护区间信息的数据结构。 线段树可以在 \(O(\log N)\) 的时间复杂度内实现: 单点修改,区间修改,区间查询(求和,最大值,最小值)等操作。 2、数学上理解线段树。 线段树维护的信息在很多时候可以认为是满足幺(半)群性质的信息。 一 阅读全文
posted @ 2021-08-27 16:04 聂玄HankNie 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 最优性算法 一、二分法 1、二分法。 (1)优势。 二分法可以将部分线性处理转化为对数处理。 二分法的时间复杂度通常为 \(O(\log N)\)。 (2)使用条件。 二分法仅能在问题状态空间严格单调的情况下使用。 (3)二分算法(详见OI学习笔记11:二分)。 2、三分法。 (1)函数的凸性。 上 阅读全文
posted @ 2021-08-27 15:12 聂玄HankNie 阅读(432) 评论(0) 推荐(0) 编辑
摘要: 计算几何(凸包与旋转卡壳) 一、二维向量 1、定义。 二维向量是二维平面中的有向线段。 \(\vec{a}=(x,y)\) 表示从 \((0,0)\) 运动到 \((x,y)\)。 向量的模:向量长度,记为 \(|\vec{a}|\)。 2、向量运算。 单位向量:三维空间中,\(\vec{i}=(1 阅读全文
posted @ 2021-08-27 00:05 聂玄HankNie 阅读(467) 评论(0) 推荐(0) 编辑
摘要: 倍增 一、倍增 倍增,顾名思义,成倍增长。一般我们在进行递推时,如果状态空间很大,通常的线性递推无法满足时间与空间复杂度的要求,那么我们可以通过成倍增长的方式,只递推状态空间中在2的整数次幂位置上的值作为代表。 当需要其他位置上的值时,我们通过“任意整数可以表示成若干个2的次幂项的和”这一性质,使用 阅读全文
posted @ 2021-08-26 19:27 聂玄HankNie 阅读(572) 评论(0) 推荐(0) 编辑