代码编织梦想

特别简单的noip-爱代码爱编程

简单数论选讲 声明:此课件中用这个格式的证明不必详细了解,只是为了让你更信服 一、逆元 因为逆元不归我讲,但是又很重要,所以在这里一笔带过 一整数

扩展crt-爱代码爱编程

好像去年这个时候我就已经看过一遍了。。但是noi的时候一点印象没有就GG了。。补知识点的时候发现自己还是不会,就稍微学了一下。。。 扩展crt就是求满足 的一组x(模数不要求互质) 做法就是假设你搞出了前k组的一个最小

leetcode 0704. 二分查找-爱代码爱编程

【LetMeFly】704.二分查找 力扣题目链接:https://leetcode.cn/problems/binary-search/ 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target

动态规划dp算法(详解+例题)-爱代码爱编程

什么是动态规划?最直白的理解就是动态的规划。 那高级一点的理解呢?就是每时每刻都拿着一个小本本,也就是记事本,把干的事情都记录下来,不断规划自己的策略,这就是动态规划。 动态规划里的小本本就对应着程序里的数组,而策略不就是往里依次填值吗。 动态规划理解到这,恭喜你,你已经了解了动态规划了。简单吧! 那我们边讲题,边理解! 1、求最短路径数 问从

dfs深搜算法(详解+例题)-爱代码爱编程

DFS是英文Depth-First-Search的缩写,意思是深度优先搜索。 什么是深度优先搜索呢?顾名思义,就是往深处遍历。举个小例子: 假设你现在要挖宝藏,你肯定会往下挖对吧。当你挖到地下10米时,探宝器出现了一个故障。一会儿显示往右下挖,一会儿显示往左下挖。你只好先往左下挖。挖啊挖,不幸的是你挖到了岩石,不能在往下挖了。你只好往回爬,爬到那个分叉

贪心算法(详解+例题)-爱代码爱编程

什么是贪心? 其实就是遵循某种规则,不断贪心地选取当前最优策略地算法设计方法。 简单来说,就是用最优策略去解问题。 那做题的框架呢? 没有框架!就是找到贪心的思路,照着编就行了。 我个人认为,贪心其实跟数学逻辑息息相关。就是用数学逻辑去找到或思考贪心思路,再用程序写出来。因此贪心的两大主要步骤就是确定贪心思路和编程! 话不多说,我们来看几道例题

【算法讲解】区间极值查询 rmq(range maximum/minimum query)-爱代码爱编程

前言 区间极值问题在计算机编程领域中常见的问题,其描述为: 给一个数组 A

【算法讲解】dp优化——四边形不等式优化(2)-爱代码爱编程

前言 上文讲了四边形不等式在一类 DP 问题中的优化策略 可能大家会觉得,这么复杂的定理,结果只用应用在某类固定 dp 方程上,有点大炮打蚊子的感觉 本文带来了四边形不等式在另外一类非常常见的 dp 方程的应用 分治 D

【算法讲解】dp优化——四边形不等式优化-爱代码爱编程

前言 此优化策略由高德纳和姚期智发现并证明,故学名称之为 Knuth-Yao Speedup (Knuth 是算法届的鼻祖,对于算法新手来说,KMP一定不陌生,Knuth 就是三个联合发明人之一的 K;Yao 就是清

【基础算法】二分查找、二分答案-爱代码爱编程

文章目录 前言二分搜索精确查找最朴素的做法随机取值优化一下二分查找 查找第一个大于(等于)目标值的下标查找最后一个小于(等于)目标值的下标STL lower_bound, upper_bound

算法串讲之floyd-warshall算法【c++】【图论】【最短路】-爱代码爱编程

我们作为刚学图论的小蒟蒻,先接触到的算法一定是图上最短路径算法。而最短路算法中最简单的当属Floyd-Warshall算法。下面是一些基本介绍: 该算法可以计算图上任意两点间的最短路径 时间复杂度: 适用情况:适用出现负边权的情况 算法伪代码: 弗洛伊德算法的基本思想是动态规划,我们枚举每一个点,并以其为中间节点更新任意两点间的最小

扩展域并查集——基本原理与实现方式-爱代码爱编程

        并查集算法可以说是所有提高组算法中最友好的算法之一,就算是它的路径压缩也很好打。但是,对于某些题,朴素的并查集可能无法得出正确答案。例如这道题。   [BOI2003]团伙 题目描述 现在有 n 个人,他们之间有两种关系:朋友和敌人。我们知道: 一个人的朋友的朋友是朋友 一个人的敌人的敌人是朋友         现在要

并查集启发式合并-爱代码爱编程

        我们知道,在并查集中为了减少时间复杂度,我们引入了路径压缩,路径压缩的原理说白了就是在find函数回来的路上顺便把本节点指向根节点。然而路径压缩也是有效率的,这个效率取决于本节点到根节点的路径长度。有没有一种方法可以更好的节省路径压缩的时间呢?有!这种方法就是启发式合并。启发式合并可以根据树的大小进行合并,也可以根据树的深度进行合并,但树的

简易理解并计算二进制除法_阿涵阳光向上的博客-爱代码爱编程

二进制除法可以算是二进制算法中最难(相对加减乘)的一个,有些人在理解上出现一些误差,下面教大家如何简单理解并计算二进制除法 首先介绍一下二进制的运算规则:1÷1=1;1÷0=0(无意义);0÷1=0;0÷0=0(无意义) 众所周知小学除法(十进制)15÷7不够除要向前面借1当10,而二进制不同的就是借1当2(补充:二进制加法1+1=10) 以下图为例

lca的tarjan求法&&poj 1470的辛酸历程_阿蒋的博客-爱代码爱编程

转载请注明出处:http://blog.csdn.net/jiangshibiao/article/details/23659735 【LCA的线性解法】LCA(最近公共祖先)的问题十分常见。以前我单纯的认为,每次O(N)扫一遍每个节点的深度、再直接暴力求LCA的效率很高——Nlog(N)。但是往往树会退化成链(或者说它不平衡),如果询问次数多的话肯定T

跟踪链接|dt介绍,含例子_code_wangzili的博客-爱代码爱编程

决策树 1. 概述 决策树就是一棵树,一个有终止模块的流程图,终点就是分类的结果。 一般来说决策树学习由三个步骤组成:特征选择、决策树构建、决策树修剪。 1.1 优点 计算复杂度不高输出结果易于理解对中间值的缺失不敏

跟踪链接|knn介绍_code_wangzili的博客-爱代码爱编程

K-近邻分类算法 1. 概述 k近邻算法采用测量不同特征值之间的距离方法来进行分类。 1.1 优点 精度高对异常值不敏感无数据输入假定 1.2 缺点 计算复杂度高空间复杂度高 1.3 数据适用范围 数值型与标

浅谈模拟退火_l.e.m.t的博客-爱代码爱编程

Q:模拟退火是什么? A:一种随机化算法,用于水分。 Q:模拟退火可以解决什么问题? A:可以处理多峰或单峰函数的求值,这时函数没有二分性,只能动态规划,想不出正解时便可尝试使用模拟退火。 Q:模拟退火的原理是什么?

leetcode 0107.二叉树的层序遍历ii - 另一种方法_tisfy的博客-爱代码爱编程

【LetMeFly】107.二叉树的层序遍历 II 力扣题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal-ii/ 给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)   示例 1: 输

leetcode 0102.二叉树的层序遍历 + 针对c++的使用空间优化 (可能不同于常规做法)_tisfy的博客-爱代码爱编程

【LetMeFly】102.二叉树的层序遍历 + 针对C++的使用空间优化 (可能不同于常规做法) 力扣题目链接:https://leetcode.cn/problems/binary-tree-level-order-traversal/ 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。   示例