小木的算法日记-2-二叉树基础及常见类型

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

前提:

二叉树的重要性:二叉树是一切复杂数据结构的基础,比如二叉堆,多叉树,字典树,线段树等等。就好像九九八十一难一样,你得先有悟空(掌握二叉树)之后的八十一难(基于二叉树的各种复杂的数据结构)才能渡过。

二叉树是一种递归的思维方式?

对的你没听错,它不仅仅是一种数据结构更代表着递归的思维方式,一切递归算法的本质就是把具体的问题抽象成树结构然后进行解决。大道至简,把复杂的抽象成简单的才是本质。

二叉树的介绍

    1
   /  \
  2   3
 /    /    \
4   5    6
   /          \
  7            8

这就是一个二叉树我们来简单的介绍一下:

1子节点与父节点。

二叉树像不像高中那会的生物遗传图?(๑乛◡乛๑嘿嘿)

 3的父节点是1  3的子节点是5和6不过在二叉树这里它们分为左子节点5与右子节点6

2以子节点为根的树称为子树。

比如节点3的左子树是节点5和7组成的树,同理节点3的右子树是节点6和8组成的树。

树=多个或者单个节点的组成(我的理解)---  所以7节点组成的树是节点5的左子树。

3根节点与叶子节点。

与现实中实际的树不同,二叉树的根节点是1(没有父节点的节点),而没有子节点的节点称为叶子节点比如4,7,8

4二叉树最大深度或最大高度

看的是层数--所以最大深度是4

二叉树的分类

一 满二叉树

满二叉树就是每一层的节点都是满的,类似于遗传图中每个父母都有两个孩子

(此图来自于Github上labaladong大佬的图,接下来几张也是呀,如有侵权请告之,谢谢啦)

满二叉树的节点个数计算公式:  2^h - 1 其中h是满二叉树的最大深度 

比如图中节点数:  2^4 - 1=15

二 完全二叉树

完全二叉树是指,二叉树的每一层的节点都紧凑靠左排列(因为除了最后一层其他层都是满的所以紧凑靠左的这个特征仅体现在最后一层),且除了最后一层,其他每层都必须是满的:

                           

完全二叉树的特点:

1 完全二叉树的左右子树也是完全二叉树

2 完全二叉树一定有一个满二叉树

三 二叉搜索树

二叉搜索树(Binary(adj:二进制的) Search Tree,简称 BST)

关于二叉搜索树你记住两句话就欧克啦

1 先整体后细节  2左小右大

    7
   / \
  4   9
 /  \     \
1   5     10   

先解释左小右大,也就是节点x的左子树中的每个节点都小于x 节点x的右子树的每个节点都大于x,所以称为左小右大。

先整体后细节:先整体就是先把7当为x节点,看看符不符合,在依次检查4 9等。

举一个不是二叉搜索树的反例

    7
   / \
  4   9
 / \      \
1   8    10

先整体,显然7的左子树中8大于7不符合二叉搜索树所以其不是搜索树

BST数据结构的优点:

因为其左小右大的特性(最左边往左下移动一直呈现递减趋势,而最右边就是递增趋势),所以我们能够在BST中快速的找到我们想要的节点,跟它名字一样嘛,搜索二叉树所以其特点或者功能就是能够快速搜索我们想要的节点,哈哈哈。

ep(example):你要找一个x 节点,一看x比最上方的节点--根节点大,根节点的左子树你是看都不看的直接右边去了,直接减少了将近50%的节点数呢,减少了50%的时间。๑乛◡乛๑嘿嘿

四 高度平衡二叉树

平衡二叉树的特点或者说是辨别方法:它的每一个节点,对的你没有听错它的每一个是每一个节点的左右子树的高度差不超过1。

ep:

    1
   / \
 2   3
 /   /    \
4  5     6
     \
       7

1的左子树高度是2,右子树高度是3

2的左子树高度是1,右子树高度是0!!!也符合

4的左子树高度是0,右子树高度是0。哈哈哈相差不超过1所以也符合。

错误示范:

    1
   / \
  2   3
 /   /     \
4   5     6
 \    \
  8    7

2的左子树高度是2,右子树是0.相差为2超过了1所以不符合。

平衡二叉树有一个重要的性质:

加入平衡二叉树有N个节点,那么平衡二叉树的高度就是O(logN)

那么为什么叫平衡呢,我的理解是如果能保证树的高度是O(logN)那么其数据结构的增删查改的效率就会很高很高。 

万物平衡的话那不就兴兴向荣蓬勃发展了嘛 ,效率也就高了๑乛◡乛๑嘿嘿

当然有极端情况(完全不平衡~)

1
  \
  2
    \
    3
      \
      4
        \
        5

1的左子树节点0右子树节点4.其就等同于单链表了,在树中进行的增删查改效率会大幅度降低,因为其链表设计到指针的移动。

五  自平衡二叉树

之前提到的基于二叉树的高级数据结构红黑树就是自平衡二叉树。

自二叉树的核心目的:

通过自动调整树的结构确保树的高度保持在对数级别(O(logN))从而到达一种平衡状态让增删查改的效率大幅度提高。

普通二叉树在最坏的情况下会退化成链表(高度O(N))从而让增删查改等操作效率大幅度下降。而平衡二叉树于普通二叉树不同之处在于其引入了旋转操作以及平衡条件来维持平衡,从而维持高效率的工作。

注:自平衡二叉树又包括了很多二叉树

1平衡条件:

  • AVL 树:任意节点的左右子树高度差不超过 1(严格平衡)。
  • 红黑树:通过颜色标记和规则间接控制树的平衡(非严格平衡,但能保证最长路径(包含红节点的)不超过最短路径(全部是黑节点的)的 2 倍)。

2 旋转操作:

当插入或删除节点导致树失衡(不符合平衡条件时,比如高度差大于1或者最长路径超过了最长路径的两倍)时,通过左旋或右旋调整子树结构,恢复平衡。旋转操作是自平衡的核心手段,能在 \(O(1)\) 时间内完成局部结构调整。

红黑树节点的五条核心规则(不要死记了解便可):

 1 节点只有红色或者黑色 

2 根节点必须是黑色

3 叶子节点(最底下那几个节点)都是黑色

4 红色节点的两个子节点必须是黑色

5 从任一节点到叶子节点的所有路径上的黑色节点的数量相同。

注:之前提到平衡条件中红黑树的最长路径不能超过最短路径的两倍。这里详细的说一下

  • 最短路径:全黑节点,长度为 h(黑色高度)。
  • 最长路径:红黑交替,长度为 2h(红色节点不影响黑色高度)。 因此,树的高度最多为 \(2\log(N+1)\),保证操作复杂度为 \(O(\log N)\)

关于红黑树的可视化操作有兴趣的话大家可以参考一下这个大佬的视频呀!

http://【红黑树 - 定义, 插入, 构建】https://www.bilibili.com/video/BV1Xm421x7Lg?vd_source=b758b8eebfbdf34c0ed4e37527c51b17

二叉树的实现方式(人话就是创建一个二叉树)

最常见的二叉树就是类似于链表那样的链式存储结构,每个二叉树有指向左右节点的指针。像八叉一样。

1方法一  运用TreeNode类创建二叉树

class TreeNode:  定义一个模板--像流水线的操作模板那样咱们也定义一个 class
    def __init__(self, x: int):  定义一个初始化的函数 指定x为整数型 其中self是一个对象相当于流水线上的一个物件
        self.val = x  让物件的值等于x
        self.left = None  物件的左指针为空值
        self.right = None  物件的右指针为空值

# 你可以这样构建一棵二叉树:
root = TreeNode(1)  根节点为1
root.left = TreeNode(2)  1的左子节点为2
root.right = TreeNode(3)   1的右子节点为3
root.left.left = TreeNode(4)  聪明的你后面肯定会啦!
root.right.left = TreeNode(5)
root.right.right = TreeNode(6)

# 构建出来的二叉树是这样的:
#     1
#    / \
#   2   3
#  /   / \
# 4   5   6

方法二 运用哈希表(类似于字典的结构也有键和值)创建二叉树

# 1 -> [2, 3]
# 2 -> [4]
# 3 -> [5, 6]

tree = {
    1: [2, 3],  #1的子节点为2 3
    2: [4],     #2的节点为4
    3: [5, 6]   #聪明的你应该会啦哈哈哈
}

结果

    1
   / \
  2   3
 /   / \
4   5   6

简洁版:

二叉树的重要性与基本概念

二叉树是复杂数据结构的基础,如二叉堆、多叉树、字典树、线段树等均由其衍生。掌握二叉树如同掌握“悟空”的能力,是应对后续“八十一难”(高级数据结构)的前提。它不仅是一种数据结构,更体现了递归的思维方式——将问题抽象为树结构并通过递归解决,化繁为简。

示例二叉树结构
      1  
     / \  
    2   3  
   /   / \  
  4   5   6  
 /     \  
7       8  

核心术语解析

  • 父节点与子节点:如节点1是节点2和3的父节点,节点5和6是节点3的左右子节点。
  • 子树:以某节点为根的树称为子树。例如,节点3的左子树为节点5和7构成的树。
  • 根节点与叶节点:无父节点的节点为根节点(如节点1),无子节点的节点为叶节点(如节点4、7、8)。
  • 深度/高度:从根到最远叶节点的层数。图中最大深度为4。

二叉树的分类

满二叉树

每一层节点均满,形如遗传图中“每对父母有两个孩子”。节点数公式为 (2^h - 1)((h)为深度)。

完全二叉树

除最后一层外均为满层,且最后一层节点紧凑靠左排列。其特点包括:

  1. 左右子树均为完全二叉树;
  2. 必包含一个满二叉树。
二叉搜索树(BST)

核心特性为“左小右大”:

  • 任意节点左子树的值均小于该节点,右子树反之。
  • 搜索效率高,通过比较可快速排除半数节点。

反例:若左子树存在大于父节点的值(如节点8 > 7),则非BST。

平衡二叉树

每个节点的左右子树高度差不超过1。平衡性保证树高为 (O(\log N)),操作效率显著优于退化链表((O(N)))。

自平衡二叉树

通过旋转操作维持平衡,如AVL树(严格平衡)和红黑树(非严格平衡)。红黑树规则包括:

  1. 节点为红或黑;
  2. 根与叶节点为黑;
  3. 红节点的子节点必为黑;
  4. 从任意节点到叶的路径黑节点数相同。

二叉树的实现

链式存储(类实现)
class TreeNode:  
    def __init__(self, val: int):  
        self.val = val  
        self.left = None  
        self.right = None  

# 构建示例  
root = TreeNode(1)  
root.left = TreeNode(2)  
root.right = TreeNode(3)  
root.left.left = TreeNode(4)  
root.right.left = TreeNode(5)  
root.right.right = TreeNode(6)  

哈希表存储
tree = {  
    1: [2, 3],  
    2: [4],  
    3: [5, 6]  
}  

通过以上方法,可直观理解二叉树的逻辑结构与实现方式,为后续高级数据结构的学习奠定基础。

我从未遇见过不曾打丢一球的高尔夫球选手,也从未见过不曾伤心过的恋人,更未见过从不亏钱的富人。失败并不可怕,可怕的是放弃。 ———《富爸爸,穷爸爸》

Swift Package Manager (SPM) 创建并集成本地库 Swift Package Manager (SPM) 在macOS 项目中创建并集成的完整步骤 阅读详情

相关推荐

Ubuntu 22.04 安装 IsaacLab 2.1.0

本文介绍了IsaacLab的完整安装流程:1)创建Python3.10虚拟环境;2)安装PyTorch2.5.1(CUDA11.8);3)升级pip并安装IsaacSim4.5.0;4)克隆IsaacLab仓库;5)运行安装脚本(需接受EULA)。若遇cmake缺失错误,需执行sudo apt安装。安装完成后可通过Ant-v0训练任务验证,成功运行后将显示IsaacSim窗口和训练完成提示。注意:IsaacSim不同版本可共存于不同环境。

weixin_47880303的博客 2224

小木的算法日记-线段树

你好,未来的算法大师!想象一下,你正在处理一个巨大的数据集,比如某个电商网站一整天的用户点击流。老板突然问你:“下午2点到3点之间,我们的总点击量是多少?” 几分钟后,他又问:“把10点到11点之间的数据,因为系统故障,全部乘以0.5,然后再告诉我下午的总点击量。”如果用普通的数组,每次查询都需要遍历,每次修改更是灾难。面对这种需求,我们该怎么办?频繁的区间查询和区间修改答案,就是我们今天的主角——。线段树 (Segment Tree)这篇文章将带你:直击痛点:理解普通数组在区间问题上的局限性。掌握神器:了

GetOver_的博客 1466

移远EC800M CAT1模块HTTP POST实战:从AT指令到OneNet平台数据上报(附STM32代码)

本文详细介绍了移远EC800M CAT1模块通过AT指令实现HTTP POST数据上报到OneNet平台的完整流程,包含STM32实战代码。内容涵盖PDP上下文激活、HTTP服务配置、JSON数据包构建等关键技术要点,并提供硬件连接、状态机设计和错误处理等实用方案,助力开发者快速实现物联网设备稳定数据传输。

weixin_42565652的博客 508

小木的算法日记-二叉堆

恭喜你!你已经完成了从理论到实践的全面学习。知识点重要性关键描述优先级队列⭐⭐⭐⭐⭐二叉堆最核心的应用,实现动态数据集合中取最值。数组实现⭐⭐⭐⭐理解如何用数组下标计算父子关系,是实现堆的关键。堆排序⭐⭐⭐重要的排序思想,但实战中多用内置函数。堆的性质⭐⭐⭐大顶堆/小顶堆的定义,是所有操作的基础。核心操作⭐⭐⭐⭐push (swim) 和 (),复杂度均为。现在,你不仅知道了二叉堆是什么,更理解了它为何如此设计以及如何在实际中发挥巨大作用。

GetOver_的博客 999

避坑指南:CesiumLab+ENVI处理Sentinel-2影像数据的完整流程

本文提供了一份详细的避坑指南,完整介绍了如何利用CesiumLab和ENVI工具链,将Sentinel-2卫星影像处理成可供Cesium三维地球引擎加载的离线瓦片数据。内容涵盖数据获取、SNAP预处理、ENVI影像增强合成以及CesiumLab切片配置等全流程实战步骤与关键参数优化,旨在帮助工程师高效构建自主可控的高精度离线地图服务。

weixin_29248653的博客 291

总结:知识图谱KG+大模型LLM

知识图谱KG+大模型LLM

安静的软件工程师 4210

小木的算法日记-多叉树的递归/层序遍历

恭喜你,坚持看到了最后!从二叉到多叉:多叉树是二叉树的泛化,遍历逻辑从处理固定的 left/right 变成了 for 循环处理 children 列表。DFS (深度优先):使用递归,代码优雅,有前序和后序两个关键操作位置,适合“一条路走到黑”的场景。BFS (广度优先):使用队列,逐层扫描,适合寻找最短路径等场景。基础版:最简单,但无法获知深度。size 进阶版:巧妙地按层处理,能记录深度,是面试高频写法。State 终极版:将节点与状态(如深度)绑定,扩展性极强,是通向更高级算法的钥匙。

GetOver_的博客 1278

手把手教你用CCS v7.3调试TI DSP28377:从连接仿真器到看懂Flash里的秘密

本文详细介绍了使用CCS v7.3调试TI DSP28377的全过程,从连接仿真器到解析Flash启动机制。通过实战演示和关键配置要点,帮助工程师快速掌握DSP调试技巧,并深入探讨bootloader设计与在线升级的实现方法,提升开发效率。

weixin_29158413的博客 408

小木的算法日记-DFS和BFS的适用场景(深度和广度)

先介绍一下二叉树的这两个常见的算法,DFS算法(递归)以及BFS算法(层序)。DFS常用来进行穷举所有路径,而BFS算法常用来寻找最短路径。比如给你出个问题,让你求最短路径,那么接下来让我们看看用DFS算法与BFS算法求的区别在哪里?DFS递归遍历算法:(一条路走到黑,遍历完一个树枝再遍历另外一个树枝)BFS层序遍历算法--逐层扩散(搜完1层搜1层而不是像D那样搜完一个树枝再搜另一个)BFS相比于DFS更适合寻找。

GetOver_的博客 1087

静态时序分析—set_sense

set_sense 常见用法

m0_61544122的博客 1万+

解决k8s核心组件calico pod资源不创建问题

解决k8s核心组件calico pod资源不创建问题 1.问题描述 由于K8S集群Master节点故障,导致calico网络组件虽然处于Running状态,但是一直无法准备就绪,如下图所示 calico-node-lpt7h运行在master节点,第一时间紧急处理方法就是将其pod删除,让K8S自动重建该pod,使整个集群快速恢复 但是就当我将calico-node-lpt7h pod删除后,该pod始终无法自建,就好像是从来没有这个pod似的 2.解决方法 期初排查时,我觉得可能是由于当前master

江晓龙的博客 4807

小木的算法日记-亲手揭秘 TreeMap/TreeSet 背后的魔法 —— 二叉搜索树

核心引擎:TreeMap 的高效和有序性源于其底层的二叉搜索树(BST)。性能关键:BST 的性能取决于其平衡性。理想情况下是 O(logN),最坏情况下是 O(N)。工业级方案:实际的 TreeMap 使用红黑树等自平衡结构来保证性能。独门绝技:通过维护 size 字段,可以高效实现 rank 和 select 等高级功能。工作中常用 TreeMap/TreeSet 功能星级排序。

GetOver_的博客 1362

PCIe协议之 Equalization篇 之 理论篇 之 FFE

作为最后一道“精加工”工序,DFE利用其不放大噪声的优势,精准地消除残余的、强烈的后光标ISI,最终得到一个非常干净、张得很开的眼图,供判决器使用。信号经过信道衰减后变得模糊,首先由CTLE进行“粗调”,提供一个宽频带的增益,将眼图初步打开,为后面的DFE创造一个可以正常工作的信号环境。,它通过将输入信号在不同时间点上的多个副本(称为“抽头”)进行加权求和,来直接塑造或“整形”输出信号的波形。:这是最主要的信号路径,通常系数为正值,决定了信号的幅度。:将所有加权后的信号相加,产生最终的均衡输出。

那么菜的博客 755

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 228

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 315

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 592

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 21

C语言程序设计题|有序数组插入数字冒泡排序

题目要求将一个数插入有序数组末尾,并用冒泡排序实现整体升序。代码先将输入数存入数组最后位置,再通过双重循环进行冒泡排序,每轮将较大元素向后移动,最终输出11个升序元素。该方法虽时间复杂度为O(n²),但符合题目要求,逻辑清晰,适合初学者理解排序原理。

2301_81429079的博客 750

【算法拾光】模拟|外观数列 + 数青蛙

本文总结两道模拟题解法:外观数列通过迭代统计连续数字个数生成下一项,关键在于处理末尾字符;数青蛙则模拟青蛙叫声“croak”状态转移,维护各阶段青蛙数量,记录最大并发数并确保全部完成。共性在于严格遵循流程、细致处理边界与非法情况,锻炼字符串遍历与状态管理能力。

wuqingyigexiaoba的博客 371

408 算法 04|主元素与三元组最小距离:两种“扫描时做决定“的思路

2013(41) 的主元素用摩尔投票一遍选出候选,但真正的考点是"选完必须验票";2020(41) 的三元组最小距离,三指针每次只挪最小的那个,靠的是 D=2×(max−min) 这个恒等式。两套完整 C 代码加真实输出,附官方评分档位表。

m0_56226131的博客 412

牛客周赛165C题(前后缀性质,递推,排序,枚举)

题目大意:给定长度为 `n` 的数组,选择 `k ∈ [1,n]`,将前 `k` 个元素整体翻转,后面的元素不变。要求操作后的整个数组非递减,统计满足条件的 `k` 的数量。题目链接:https://ac.nowcoder.com/acm/contest/141721/C。时间复杂度:O(nlogn)

2501_94316951的博客 172

【数据结构-3】算法美学之降复杂度

在while循环的循环体内,首先用临时变量保存最后一个位置的数据,再通过for循环把所有元素往后移动一位,最后把tmp中保存的值放到下标为0的位置上去。方法二的思路是:创建新数组,让原数组中后k个数据移动到新数组中前面的位置,让原数组中前numsSize-k个数据移动到新数组中后面的位置,这。这段代码的思路是:三次逆置,第一次逆置前numsSize-k个数据,第二次逆置后k个数据,最后整体逆置。这篇博文分享一道解法不一的算法题,求解过程的目的在于降低算法的时间复杂度,题源力扣。,属于空间换时间的操作。

weixin_44218929的博客 85

算法61,判定是否为字符重排

两字符串能互为重排 ⇔。

sheshibenniaodan的博客 219

算法日常・每日刷题--<动态规划>32

给定严格递增的正整数数组,求最长斐波那契子序列长度。使用二维DP,dp[i][j]表示以arr[i]、arr[j]为最后两项的序列长度,初始化均为2。通过哈希表快速查找前一项target = arr[j] - arr[i],若存在且下标小于i,则状态转移:dp[i][j] = dp[k][i] + 1。遍历更新全局最大长度,最终若结果小于3则返回0。时间复杂度O(n²),空间复杂度O(n²)。

2503_92261635的博客 178

算法札记:几何分布在算法题UVA1262的运用

集卡问题求解核心:将集齐n种优惠券的过程分为n个阶段,每个阶段期望购买次数为 $ \frac{n}{k} $(k为剩余种类数),总期望为 $ n \cdot H_n $(调和数)。通过自洽方程推导单阶段期望,无需几何分布或无穷级数,逻辑清晰且适用于大一水平。例如,n=5时期望约11.42,非5。题目要求以带分数形式输出精确结果,算法上需累加分数并化简。

Keven_11的博客 358

考拉兹猜想 - 7

本文通过引入虚数单位重构Collatz猜想的迭代逻辑,指出偶数减半与奇数“乘3加1”的过程在虚数坐标下等价于归结操作。关键在于:乘3加1使奇数跃升至偶数,随后持续减半,而虚数单位代表“无限减1”,实现无限向有限的转化。无论初始值如何,减半始终主导,最终归结为4-2-1循环。该视角消解了正向思维中的速度竞争疑虑,证明归结是必然结果。

杨铸人的博客 45
上一篇: 小木的学习日记-SQL查询
下一篇: 小木的学习日记-SQL数据排序与去重
木旭林晖
博客等级 码龄2年 159粉丝 31原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值