数列 前缀 区间 算法

Python+协同过滤算法实现一个简单的图书推荐系统

![image](https://img2023.cnblogs.com/blog/1939553/202308/1939553-20230829134349308-508451685.gif) ## 背景介绍 当我们做一些推荐系统网站时,通常需要合适的推荐算法,下面给大家介绍推荐系统中经典的推荐算 ......
算法 Python 图书 系统

素性测试--Miller-Rabin算法

### 引子 今天(23/8/16),老师问了一个有趣的问题: 出道题给大家, 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111113111111111111 ......
素性 Miller-Rabin 算法 Miller Rabin

C++算法

运行前进行卡夫曼滤波(减小机器检测波动的影响) 延迟上机算法 速率法 原理 1、判断最新数据点和前面几个点的差值是否大于设定值 2、判断两点间的斜率k是否大于设定值 3、判断拟合曲线的符合度是否在规定范围内 技术实现 /// \brief 直线拟合-一元回归,拟合的结果可以使用getFactor获取 ......
算法

【数据结构与算法】TypeScript 实现图结构

```ts class Grapg { // 用于存储所有的顶点 verteces: T[] = []; // 用于存储所有的边 采用邻接表的形式 adjList: Map = new Map(); // 添加顶点 addVertex(v: T) { this.verteces.push(v); / ......
结构 数据结构 算法 TypeScript 数据

[代码随想录]Day30-贪心算法part04

## 题目:[860. 柠檬水找零](https://leetcode.cn/problems/lemonade-change/) ### 思路: 收到钱三种情况: 1. 5刀:直接收起来就可以了,不需要找钱 2. 10刀:收到10刀,需要找5刀,如果没有5刀,就返回false,否则5刀-1 3. ......
随想录 随想 算法 代码 part

二维数组和算法

1、⼆维数组 1. 定义: int[][] scores = new int[][]{{80,90,100},{99,88,77},{66,100,88}}; 2. 简写:int[][] scores = {{80,90,100},{99,88,77},{66,100,88}}; 3. 定义⼆: i ......
数组 算法

数据结构与算法之美读书笔记

读书笔记链接 时间复杂度分析 只关注执行次数最多的一段代码 加法法则:总复杂度等于量级最大的那段代码的复杂度 乘法法则:嵌套代码的复杂度等于嵌套内外代码复杂度的乘积 最好、最坏、平均时间复杂度 数组 内存中一块连续的存储空间,有效使用 CPU 的缓存机制,可以很方便的定位元素 在 O(1) 的时间通 ......
数据结构 算法 结构 笔记 数据

二叉树的存储结构和操作算法

## 二叉树的存储结构和操作算法 #### 二叉树的存储结构 ![屏幕截图(299)](https://harper886.oss-cn-qingdao.aliyuncs.com/img/202304101913586.png) **1.顺序存储结构(完全二叉树/满二叉树)** **2.链式存储结构 ......
算法 结构

LRU算法

# 思路 LRU算法,访问/更新/插入都会将数据置于队尾(假设队头淘汰)。 看3种情况的变化: * 插入:简单置于队尾即可。 * 更新:删除原有节点,新增节点置于队尾。 * 访问:将原节点提至队尾。 除了插入只需要简单接到链表尾部以外,更新和访问都是可能操作链表中间的,所以自然地就需要引入Map来快 ......
算法 LRU

空间密度算法DBSCAN和K-means聚类算法有什么区别和联系

DBSCAN(Density-Based Spatial Clustering of Applications with Noise)和K-means是两种常见的聚类算法,它们有一些区别和联系。 区别: 原理:K-means是基于距离的划分聚类算法,通过最小化数据点与聚类中心之间的平方误差来进行聚类 ......
算法 密度 K-means DBSCAN means

遗传算法解决航路规划问题(MATLAB)

# 遗传算法 > 文章部分图片和思路来自司守奎,孙兆亮《数学建模算法与应用》第二版 定义:遗传算法是一种基于自然选择原理和自然遗传机制的搜索(寻优)算法,模拟自然界中的声明进化机制,在人工系统中实现特定目标的优化。 本质其实就是群体搜索技术,根据适者生存的原则逐代进化,最终得到最优解或近似最优解。 ......
航路 算法 MATLAB 问题

[代码随想录]Day29-贪心算法part03

## 题目:[1005.K次取反后最大化的数组和](https://leetcode.cn/problems/maximize-sum-of-array-after-k-negations/) ### 思路: 思路是: 1. 先把负数从小到大变成正数(即绝对值由大到小) 2. 如果还需要变化(k>0 ......
随想录 随想 算法 代码 part

深入探索OCR技术:前沿算法与工业级部署方案揭秘

# 深入探索OCR技术:前沿算法与工业级部署方案揭秘 ![](https://ai-studio-static-online.cdn.bcebos.com/72b2077605dd49b78f7f647d6821d10231f6bc52d7ed463da451a6a0bd1fc5ff) *注:以上图 ......
算法 方案 工业 技术 OCR

突破边界:文本检测算法的革新与应用前景

# 突破边界:文本检测算法的革新与应用前景 # 1.文本检测理论篇(文本检测方法介绍) 文本检测任务是找出图像或视频中的文字位置。不同于目标检测任务,`目标检测不仅要解决定位问题,还要解决目标分类问题`。 文本在图像中的表现形式可以视为一种‘目标‘,通用的目标检测的方法也适用于文本检测,从任务本身上 ......
边界 算法 前景 文本

【校招VIP】前端算法考察之排序

考点介绍: 不同的场景中,不同的排序算法执行效率不同。 稳定:冒泡、插入、归并 不稳定:选择、快速、堆排序、希尔排序 一、考点题目 1、使用js实现数组的快速排序 解答:快速排序使用了冒泡+分治的思路。 每轮从数组中取出一个数作为基准;在排序过程中,小于或等于基准数的全部放到基准的左边,大于基准的全 ......
前端 算法 VIP

【校招VIP】算法考点之堆排

考点介绍: 排序算法属于数据结构和算法的基础内容,并且也是大厂笔试中的高频考点。 堆排序是使用一棵树存储序列这个课树只保证跟节点是这棵树中的最小值,但并不保证其他节点是按顺序的。因此他的排序是每次从堆中取得堆顶,取得 n 次就得到了个数为 n 的有序序列。 一、考点试题 1.堆排序的原理 解答:1、 ......
考点 算法 VIP

P5629 【AFOI-19】区间与除法 题解

# P5629 【AFOI-19】区间与除法 题解 由于题目中的运算是除法,所以对于一个数字 $x$,最多运算次数不会超过 $\lceil\log_{d}x\rceil$ 就会变成 $0$。 然后我们就可以在 $O(n\log C)$ 的时间复杂度内算出来每一个数字能被哪些原数消灭。 这样处理询问仍 ......
除法 题解 区间 P5629 5629

【算法】用c#实现计算方法中的经典降幂优化策略,减少计算复杂度

对于给定的数组[x1,x2,x3,…,xn],计算幂的累积:x1^(x2^(x3^(…^xn))的最后一位(十进制)数字。 例如,对于数组[3,4,2],您的代码应该返回1,因为3^(4^2)=3^16=43046721。 结果的增长得快得令人难以置信。例如,9^(9^9)有超过3.69亿个数字。你 ......
降幂 复杂度 算法 策略 方法

前缀和与差分

## 前缀和 ### 一维前缀和 公式: $$ s[i] = s[i - 1] + a[i] $$ 模板: ```c++ const int N = 10000 + 10; int n,m; int a[N],s[N]; int main() { scanf("%d%d",&n,&m); for ( ......
前缀

二分算法

1. 将两个集合合并 2. 询问两个元素是否在一个集合当中 基本原理:每个集合用一棵树表示,树根的编号就是整个集合的编号。每个节点储存它的父节点,p[x]表示x的父节点 判断树根(属于那个集合)`if (p[x] == x)` 求x的集合编号:`while(p[x] != x) x = p[x];` ......
算法

Bresenham画直线算法(待完成)

[TOC] Bresenham算法是图形学非常经典的光栅线生成算法,可用于显示直线、圆以及其他曲线。这里通过算法画直线过程,了解其工作原理。 # 问题描述 已知线段2端点$(x_0, y_0) (x_e, y_e)$,屏幕上画出该直线段。 由于屏幕是通过像素点显示的,只能通过像素点所在的整数坐标近似 ......
算法 直线 Bresenham

[算法学习笔记][刷题笔记] 单调队列优化 dp

### 前置知识 · 单调队列 单调队列顾名思义,一般用于解决 **滑动RMQ**问题。它的原理非常简单。我们维护一个双端队列,这个双端队列 **只维护可能成为区间最值**的元素。 最基础的单调队列,例如滑动窗口。直接依据题意维护即可。 这里提供单调队列模板(STL deque 版) 单调队列模板( ......
笔记 队列 算法 dp

关于欧几里得算法与裴蜀定理的证明

### 前言: 因为某次考试订正 T4,用到了 exCRT,然后发现我和 lws 不会 exgcd…… 所以来把 gcd 到 exgcd 重新学一下,就写了这篇 trick。 ### 欧几里得算法: 求证: $$ \gcd(a,b)=\begin{cases} \gcd(b,a\bmod b) & ......
定理 算法

文心一言 VS 讯飞星火 VS chatgpt (82)-- 算法导论8.1 1题

# 一、如果用go语言,在一棵比较排序算法的决策树中,一个叶结点可能的最小深度是多少? ## 文心一言: 在一个排序决策树(如二叉搜索树)中,每个叶节点的最小深度等于输入数据中最大元素与最小元素之间的位距离。这是因为在最坏的情况下,每个比较都需要将最大元素向最小元素的路径移动,因此叶节点的最小深度就 ......
文心 导论 算法 chatgpt VS

[算法学习笔记][刷题笔记] 2023/8/26&8/27 解题报告状压 dp

[题单](https://www.luogu.com.cn/training/334619#information) ### 状压 dp 状压 dp是一种非常暴力的算法,它直接记录不同的状态,通过状态进行转移。 状压 dp可以解决 NP 类问题。它的原理是暴力枚举每一种可能的状态。所以它的复杂度是指 ......
笔记 算法 2023 amp 26

深度-高考后的分层之战和人生算法破圈(转渤海小吏)

谈高考之前先大概想明白一个根本的问题,社会的层级细分下来可以搞出十几20层,简化来看可以简要分为以下三层。第一,上层高护城河生产资料和权利的所有者。二,中层小型生产资料所有者和有产打工人。三基层也就是无产者,然后我们根据上面三个阶层来看一下每个层级的最优解和想法是啥?先来看上层建筑,既得利益者是希望 ......
小吏 算法 深度 人生

[代码随想录]Day28-贪心算法part02

## 题目:[122. 买卖股票的最佳时机 II](https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/) ### 思路: 假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。 相当于 ......
随想录 随想 算法 代码 part

面对算法竞赛OI的Linux下vim简易配置

这段配置基本通用 但是需要vim支持clipboard才能复制到系统剪切板 下面是配置正文 .vimrc ``` let mapleader = "\" vnoremap y "+y inoremap jk nnoremap e :w:!g++ % -o % nnoremap e :w:!g++ % ......
算法 简易 Linux vim

P5369 [PKUSC2018] 最大前缀和 做题记录

[题目传送门](https://www.luogu.com.cn/problem/P5369) # 题意 给定一列数 $a_{1\dots n}$,求其所有排列的最大前缀和之和,$\bmod \ 998244353$。$n \le 20, \sum \lvert a_{i} \rvert \le 1 ......
前缀 P5369 PKUSC 5369 2018

【LeetCode回溯算法#12】二叉树的直径,树形dp的前置内容(使用dfs)

### 二叉树的直径 给你一棵二叉树的根节点,返回该树的 **直径** 。 二叉树的 **直径** 是指树中任意两个节点之间最长路径的 **长度** 。这条路径可能经过也可能不经过根节点 `root` 。 两节点之间路径的 **长度** 由它们之间边数表示。 **示例 1:** ``` 输入:roo ......
树形 直径 算法 LeetCode 内容