算法学习
文章平均质量分 84
算法学习
EmoryHuang
研究僧,菜鸟级程序员一枚
展开
-
摩尔投票法学习笔记
博耶-摩尔多数投票算法(英语:Boyer–Moore majority vote algorithm),中文常作多数投票算法、摩尔投票算法等,是一种用来寻找一组元素中占多数元素的常数空间级时间复杂度算法。这一算法由罗伯特·S·博耶和 J·斯特罗瑟·摩尔在 1981 年发表,也是处理数据流的一种典型算法。...原创 2022-06-10 20:15:08 · 369 阅读 · 0 评论 -
二分查找学习笔记
二分查找也称折半查找,它是一种效率较高的查找方法,思路很简单,细节是魔鬼。本文主要探究几个最常用的二分查找场景:寻找一个数、寻找左侧、右侧边界,并给出二分模板。原创 2022-06-10 20:13:41 · 132 阅读 · 0 评论 -
字符串之字符串哈希
Hash 函数有助于解决很多问题,如果我们想有效地解决比较字符串的问题,最朴素的办法是直接比较两个字符串,这样做的时间复杂度是$O(\min(n_1,n_2))$,字符串哈希的想法在于,我们将每个字符串转换为一个整数,然后比较它们而不是字符串。......原创 2022-06-10 20:07:53 · 454 阅读 · 0 评论 -
线段树模板
线段树是算法竞赛中常用的用来维护 **区间信息** 的数据结构。线段树可以在$O(\log{N})$的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。...原创 2022-06-08 20:48:51 · 121 阅读 · 0 评论 -
树状数组学习笔记
树状数组或二叉索引树(Binary Indexed Tree),又以其发明者命名为 Fenwick 树原创 2022-06-08 20:45:01 · 76 阅读 · 0 评论 -
由数据范围反推算法复杂度以及算法内容
由数据范围反推算法复杂度以及算法内容一般 ACM 或者笔试题的时间限制是 1 秒或 2 秒。在这种情况下,C++ 代码中的操作次数控制在 107∼10810^7∼10^8107∼108 为最佳。下面给出在不同数据范围下,代码的时间复杂度和算法该如何选择:n≤30→O(n3)n \leq 30 \to O(n^3)n≤30→O(n3)指数级别,DFS + 剪枝,状态压缩 dpn≤100→O(n3)n \leq 100 \to O(n^3)n≤100→O(n3)Floyd,dp,高斯消元转载 2021-09-20 21:11:36 · 77 阅读 · 0 评论 -
快速幂算法详解
快速幂算法详解前言首先考虑这么一个问题{% note info %}给定三个正整数 a, b, m(a < 10910^9109,b < 10910^9109,1 < m < 10910^9109),求 aba^bab % m。{% endnote %}对于这个问题,只要写一个简单的循环就能够搞定// 普通求幂long long QuickPow(long long a, long long b, long long m) { long long ans =原创 2021-09-20 21:09:35 · 1757 阅读 · 0 评论