标签:数据结构
1. 数据建模 1.1. 多上下文编码算法背后的基本概念 1.1.1. 会考虑最后观察到的几个符号以确定当前符号的理想编码位数 1.1.2. 英语中的字母组合如何影响后面字母的出现概率 1.1.3. 基于统计观察的相邻关系,通常也被称作“预测”编码器 1.2. 马尔可夫链(Markov chai
方法1 二分+暴力+前缀和Check 注意细节 通过二维前缀和判定矩形内是否全为1,计算和等于长度的平方就判断为是 复杂度(Theta (n^2log{n})) #include <bits/stdc++.h> #define N (int)(105) using namespac
高精度 存储方式: 整数的长度一般小于1e6 大整数的每一位存储到数组里 存储时低位在前,高位在后,方便进位 高精度加法 每一位相加Ai + Bi + t, t表示进位取值0/1,逢十进一 模板: //存储方式 string a, b;//a = "123456" vector<i
1 介绍 雪花算法(Snowflake)是一种生成分布式全局唯一ID的算法,生成的ID称为Snowflake IDs或snowflakes。这种算法由Twitter创建,并用于推文的ID。目前仓储平台生成ID是用的雪花算法修改后的版本。 雪花算法几个特性 生成的ID分布式唯一和按照时间递增有序,
双指针 两个指针指向两个不同的序列 两个指针指向同一个序列(归并排序,快速排序) 主要作用:将暴力O(n^2)遍历通过两个指针的某种单调性质优化到O(n),也就是说将内层循环变量j通过与外层循环变量i的关系,将内层循环次数降低不定次 模板: for(int i = 1; i < n; +
01背包问题 public class KnapsackProblem { public static void main(String[] args) { int []w={1,2,3,4,5}; int[]value={3,4,6,8,10};
原题:P9474 [yLOI2022] 长安幻世绘 看到很多大佬的题解直接讲了做法,本蒟蒻看得不是很懂,调了很久才把这题做出来,于是写了这篇比较详细的题解谈一下我做这题从头到尾的思路,希望对各位有帮助 qwq。 思路 我们首先思考这样一个问题,如果已经知道最终答案对应的最大值和最小值,又不知道题目
本文从一个小明写的bug 开始,讲bug的发现、排查定位,并由此展开对涉及的算法进行图解分析和源码分析。 事情挺曲折的,因为小明的代码是有单测的,让小明更加笃定自己写的没问题。所以在排查的时候,也经历了前世的500年,去排查排序后的list改动(主要是小明和同事互相怀疑对方的代码,不多说了)。 本
概述   集合类中的sort方法,听说在java7中就引入了,但是我没有用过java7,不太清楚,java8中的排序是采用Timsort排序算法实现的,这个排序最开始是在python中由Tim Peters实现的,后来Java觉得不错,就引入了这个排序到Java中,竟然以作者的名字命名,搞得我还以
P8436 【模板】边双连通分量 概念 注意!双连通仅针对无向图而言。 割边(桥):删去这条边使图不连通的边。 边双连通图:不存在割边的图(等价定义:图中任意两个点都至少两条不同路径可以到达的图)。 性质: 一个点不可能同时属于2个边双连通图,因为如果两个双连通分量相交与一点,那么删去任
定义 具有单调性的栈结构,该数据结构的目的是快速找到与一个元素距离最近的元素 过程(摘自oiwiki) 插入 将一个元素插入单调栈时,为了维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性的前提下弹出最少的元素。 例如,栈中自顶向下的元素为 {0,11,45,81}。 插入元素 14
链表 用数组模拟,不同于结构体加指针 调用new关键字开上万级别的节点非常慢,基本会超时 单链表 来构造邻接表 用于存图与树 基本结构: head 表示头结点的下标 e[i] 表示节点i的值 ne[i] 表示节点i的下一个节点的下标 idx 存储当前已经用到了哪个节点,表示新节点 基本操
引入 有 n 个物品和一个容量为 W 的背包,每个物品有重量 w{i}和价值 v{i}两种属性,要求选若干物品放入背包使背包中物品的总价值最大且背包中物品的总重量不超过背包的容量。 我们之后涉及到的所有背包问题都会根据这个背景展开 1. 01背包 每个物品只能选取一次。 这样每个物品都会只有
左偏树属于可并堆的一种,可并堆,也就是可以在较低的时间复杂度下完成对两个堆的合并。 定义及性质 对于一棵二叉树,定义外节点为左儿子或右耳子为空的节点,定义其的 (dist) 为 (1),而不是外节点的 (dist) 为其到子树中最近的外节点距离 (+1)。空节点的 (dist) 为 (0)。 例如
「观前提醒」 「文章仅供学习和参考,如有问题请在评论区提出」 目录O(N) 建树方法一方法二维护区间和单点修改,区间查询区间修改,单点查询区间修改,区间查询维护二维子矩阵和(二维树状数组)单点修改,子矩阵查询子矩阵修改,单点查询子矩阵修改,子矩阵查询求逆序对个数求数列中小于 x 的元素个数参考
作者:京东零售 崔宁 1. 背景说明 目前,推荐算法部支持了主站、企业业务、全渠道等20+业务线的900+推荐场景,通过梳理大促运营、各垂直业务线推荐场景的共性需求,对现有推荐算法能力进行沉淀和积累,并通过算法PaaS化打造通用化的推荐能力,提升各业务场景推荐赋能效率,高效赋能业务需求。 为什么是
树状数组是一种数据结构,普通树状数组维护的信息及运算要满足结合律且可差分。 一维树状数组 单点加、区间求和 树状数组是用长度为 (n) 的数组存储的。我们假设这个数组为 (n),令 lowbit(i)=i&(-i),则 (c_i) 保存的是向前 lowbit(i) 长度的 (a) 数组区间
A - Chord (abc312 A) 题目大意 给定一个长度为(3)的字符串,问是不是ACE, BDF, CEG, DFA, EGB, FAC, GBD中的一个。 解题思路 依次判断即可。 神奇的代码#include <bits/stdc++.h> using namespace