
算法学习
文章平均质量分 67
算法学习笔记以及刷题记录
HollY不清醒
一个贩卖焦虑的计算机小白
展开
-
字符串算法
但是为了将映射关系进行一一对应,也就是,一个字符串对应一个数字,那么一个数字也对应一个字符串。字典树也叫Trie树,是一种树形结构,其中每个结点上可以存储(当然也可以不存储),些变量用于表示该字符串的数量(右图中结点上的数字表示结点编号),每条边表示一个字符。用01tire来存树,每次查询找到异或的最大值和最小值,并依据题意进行相关二分,具体可看本题题意和题解。类比字典树,把数的二进制表示存储在字典树中,树的每个边代表0或1。每个结点仅存在一条到根节点的路径,这条路径上的所有边就表示一条字符串。原创 2024-10-03 17:50:52 · 511 阅读 · 1 评论 -
状态压缩dp
状态压缩就是使用某种方法来表示某种状态,通常是用一串01数字(二进制数)来表示各个状态。这就要求使用状态压缩的对象的状态必须只有两种,0或1;当然如果有三种状态用三进制来表示也未尝不可。1.通常用dp数组来存所有状态,所有状态用二进制表示,dp数组开大小为dp[(1<<n)-1]。2.初始化dp数组,同时将输入数据,初始化每一层对应的状态数组。3.枚举每一层状态,同时枚举所有状态,并找到相应的状态转移方程。[蓝桥杯 2019 省 A] 糖果题解:先开dp数组用来表示所有状态对应的购买数量,并开数组用来原创 2024-07-23 00:22:39 · 302 阅读 · 0 评论 -
一分钟带你了解typedef及typedef struct和struct的区别
首先来了解typedef的含义:在C++中,typedef是一种用于为已存在的类型创建别名的机制。通过typedef,可以为现有的类型定义一个新的名称,使得代码更易读且具有更好的可维护性。其中,existing_type是已有类型的名称,new_name是为该类型定义的新名称。原创 2024-04-28 16:04:17 · 751 阅读 · 1 评论 -
算法思想-离散化
离散化(Discretization)是一种数据处理技术,用于将连续的数据(如实数或非常大的整数)映射到有限的离散值域中,从而提高算法的时空效率。例如原数组的范围是[1,1e9],而数组大小仅为1e5,那么说明元素值的“种类数”最多也就1e5种,从而可以利用一个数组(即离散化数组)来表示某个元素值的排名(即第几小)现值域的压缩,将原数组的元素值作为下标来处理。离散化的核心思想是将原数组中的元素值映射到一个较小的离散值域中,使得原数组的元素值能够作为下标来处理。原创 2024-07-21 22:16:45 · 241 阅读 · 0 评论 -
C++中vector 常见用法和技巧笔记(持续更新......)
记录刷题过程中遇到的vector常见用法和技巧的学习笔记原创 2024-05-04 16:08:39 · 508 阅读 · 0 评论 -
树状数组基础
即对3、3+lowbit(3)=4、4+lowbit(4)=8…从3开始去找接下来的t是进行加等于lowbit操作,直到范围超过n。如给a[3]加上x,对应tree数组要修改的有t[3]、t[4]、t[8]、t[16]…一种位运算操作,用于计算出数字的二进制表达中的最低位的1以及后面所有的0。代码原理是利用计算机存储特性,不用深究原理,只需记住代码。相应的减等于lowbit并求和,直到减到0为止,可以先建立树状数组在画图理解。即对与i其管辖的区间(即区间和的范围)为。树状数组用来存储一段区间的和,例如。原创 2024-07-29 16:49:10 · 290 阅读 · 0 评论 -
关于getline刷题遇到的小问题
输入语法为getline(cin,s),从输入流读取数据并存为字符串。原创 2024-04-22 19:23:20 · 383 阅读 · 2 评论 -
博弈论—入门篇
学习算法过程中的博弈论基本概念笔记原创 2024-06-24 16:30:11 · 1404 阅读 · 0 评论 -
三种查找算法比较:折半查找(二分查找)、插值查找、斐波那契查找
此文章为介绍基于二分思想的查找算法实现及比较实验。原创 2024-04-26 20:27:47 · 2758 阅读 · 3 评论