题目大意 详细题目传送门 给一个 \(m\) 行 \(n\) 列的网格图,相邻格子之间有边权。 \(q\) 组询问求 \((a,b)\) 到 \((c,d)\) 的最短路。 \(m\leq10,n\leq10^5\) 思路 首先想利用网格图和这个 \(m=10\) 的条件,否则一定是朴素最短路没有优 ...
从图书馆找书到矩阵搜索:探索二维矩阵中的高效搜索 生活中的搜索策略 想象你在一个大型图书馆里找书。这个图书馆的书架是按照两个维度排列的:每个书架从左到右按书名字母顺序排列,从上到下的书架则按照出版年份排序。如果你要找一本特定的书,你会怎么做?显然,从第一个书架第一本书开始一本本查找是最笨的方法。聪明 ...
二分搜索的不同情况 二分搜索可以用来查找满足条件的值,但是满足条件的值可能只有1个,也可能有多个。比如查找1的索引,对于【1,1,2,2】来说,就有2个。一般要求的就是:满足条件最大值/满足条件最小值。 二分搜索详细介绍可以参考:https://programmercarl.com/0704.二分查 ...
引言 在图论中,拓扑排序(Topological Sorting)是一种重要的算法,主要用于解决有向无环图(DAG)中的依赖关系问题。它在任务调度、编译器的依赖解析、课程安排等领域有着广泛的应用。本文将详细介绍拓扑排序的背景、定义、原理、应用场景,并通过伪代码和具体代码实现帮助读者深入理解。最后,我 ...
字符串的最小表示法 由来 字符串有时需要进行“旋转”,即一个一个把尾部元素放到前面。那么,我们怎么知道一个字符串是不是另一个字符串旋转过来的呢? 我们发现,这种旋转其实相当于把字符串首尾相接成环,然后取不同的起点重新组成字符串。在这些能够组成的字符串中,字典序最小的字符串是唯一的。那么,我们能不能在 ...
1. 马克·扎克伯格 1.1. Mark Zuckerberg 1.2. 1984年出生于纽约州怀特普莱恩斯 1.3. 在他读初中时,他的父亲教会了他如何编程 1.3.1. 后来,他父亲雇用了一位专业的程序员来指导他 1.4. 进入了哈佛大学,并入选了计算机科学和心理学的联合学位项目 1.5. 扎克 ...
从照片旋转到矩阵变换:探索图像旋转问题 生活中的旋转 在这个自拍时代,我们经常需要调整照片的方向。有时拍出来的照片歪了,需要旋转90度;有时想要换个角度看看效果,来回旋转照片。这种旋转操作不仅存在于我们的日常生活中,在计算机图形学、图像处理等领域也是一个基础且重要的操作。 问题描述 LeetCode ...
20世纪70年代小型计算机普及,苹果推出Apple和Macintosh;蒂姆·伯纳斯-李提出万维网,改变了网络访问方式;亚马逊采用个性化推荐算法;谷歌开发PageRank算法,引领网络搜索和关键字广告。 ...
从生活场景到螺旋矩阵:探索矩阵的螺旋遍历 生活中的螺旋 你有没有注意过,生活中螺旋的形状随处可见?比如蜗牛壳的螺旋纹路、向日葵中心的螺旋排列、甚至是停车场的螺旋坡道。这种由外向内(或由内向外)的螺旋路径,不仅是大自然的奇妙设计,也启发了我们解决一些编程问题。 问题描述 LeetCode第54题"螺旋 ...
从扫雷游戏到矩阵操作:探索矩阵置零问题 生活中的算法 想象你在玩扫雷游戏,当你点到一个地雷时,不仅这个格子会被标记,与它同行同列的格子也都会受到影响。或者想象一个办公室的座位表,如果某个位置发现了感染者,为了安全起见,需要将该员工所在的整行(同排同事)和整列(对面同事)都标记为密切接触者需要检测。 ...
本文主要面向普及/提高组 OIer 和 ACMer。考虑大多数 OIer 的情况,本文默认读者只会矩阵乘法,不了解矩阵的行列式,矩阵的秩等内容。本文使用 C++ 编写代码示例。 什么是二阶线性递推 二阶线性递推数列在 OI 界还有个著名的名字:广义斐波那契数列。其所指为如下数列 \(\{a_n\}\ ...
通信系统需纠错,汉明码优化校验和;互联网设计缺安全,公钥加密RSA成基石,保障数据传输安全,现广泛用于万维网SSL。 ...
浅谈李超线段树 概论 要求在平面直角坐标系下维护两个操作: 在平面上加入一条线段。 给定一个数 \(k\),询问与直线 \(x = k\) 相交的线段的交点的纵坐标最值。 李超线段树就是能够维护以上两个操作的数据结构。 基本概念 首先需要明确:李超树是一种线段树,它的一个节点存储的是一个区间 \([ ...
题目大意 一个长度为 \(n\) 的序列 \(a\),与 \(m\) 次操作: 1.将 \(a_x\) 改成 \(y\)。 2. 求 \(\sum_{i=1}^x\sum_{i=1}^x f(i,j)\) 其中 \(f(i,j)\) 表示区间 \([i,j]\) 内的序列 \(a\) 的不同元素个数 ...
随机跳题:CF *1400 ~ *2000. *CF869C The Intriguing Obsession *1800。combinatorics,dp,math。 因为两个相同颜色的岛屿之间的距离至少为 \(\color{red}\bf{3}\),所以显然有以下两条: 两个相同颜色的岛屿之间不 ...
苏联1957年发射首颗人造卫星。分组交换提高网络效率。阿帕网1960s诞生,采用分组交换,成互联网鼻祖。TCP/IP协议解决网络互联,现成互联网传输标准。 ...
从图书馆编目到数组搜索:探索缺失的第一个正整数 生活中的算法 想象你是一位图书馆管理员,正在整理一排连续编号的图书。这些书应该从1号开始按顺序排列,但是有些编号的书不见了。你的任务是找出第一个缺失的编号。这就像是在做点名,发现第一个没来上课的同学。 这个场景在生活中很常见。比如: 餐厅服务员查看哪个 ...
1. 组合优化 1.1. 蛮力搜索算法会尝试所有可能的组合并从中选择最好的那个 1.2. 旅行商问题是众多组合优化(combinatorial optimization)问题中的一个,它要求许多固定元素以可能的最佳方式进行组合 1.2.1. 固定元素可以有无数种排列方式 1.2.2. 目标是找到唯一 ...
从购物清单到数组乘积:探索除自身外数组的乘积问题 生活中的算法 想象你是一家糕点店的老板,今天要制作不同种类的蛋糕。每个蛋糕都需要面粉、鸡蛋、糖和黄油,但用量不同。比如: 奶油蛋糕:2斤面粉,4个鸡蛋,1斤糖,0.5斤黄油 巧克力蛋糕:1斤面粉,3个鸡蛋,1.5斤糖,1斤黄油 水果蛋糕:3斤面粉,6 ...
从风扇叶片到数组轮转:探索轮转数组问题 生活中的算法 想象你在看一个风扇缓缓转动,每次转动三个叶片的距离。原本在上方的叶片转到了右侧,原本在右侧的叶片转到了下方...这就是一个生动的轮转过程。再比如,幼儿园老师让小朋友们围成一个圈,喊"向右移动3个位置",每个小朋友就会走到新的位置上。 这种轮转在生 ...