44046460c995237e10f3766bd8da82e158848e62dc070e533dba3c5d30cdf909f0a6007d3f5ed2728493ed8f8511154ce1c63a6d5ae735419690afbd4cae0c31227cca0d3c443b8c7a49568fb4625766903f3bf48593ff8d7c515fd3cb1904ab95aa41f877e29da28030c17f09676f17ab78fca3d10aeedfab1a2d3399debaf384d4f42d1a4720ba69b5926c5314ad34c78c25a7025c06cdf6de8fcd09eb46cd124b8de97b345f7fda4ef044f689ebd4bd13b67df677fb7591373de1d4a8236361c5dcf288cd3c5d28f9a526b10bbc96e22ef15d38b30152c03658cdd42dd07318df659814e696fc12e5a7d19e12671bcc6a2ca4df9e ...
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
$ hexo new "My New Post"
More info: Writing
Run server
$ hexo server
More info: Server
Generate static files
$ hexo generate
More info: Generating
Deploy to remote sites
$ hexo deploy
More info: Deployment
C++ 最大子矩形问题
最大子矩形问题是在一个二维矩阵中寻找一个子矩形,使得该子矩形内所有元素的和最大。这是一个经典的动态规划问题。
问题描述
给定一个 m × n 的整数矩阵,找出其中和最大的子矩形。
解决方案
方法一:暴力解法(时间复杂度 O(m²n²))
#include <iostream>#include <vector>#include <climits>using namespace std;int maxSubRectangle(vector<vector<int>>& matrix) { int m = matrix.size(); if (m == 0) return 0; int n = matrix[0].size(); int maxSum = INT_MIN; // 遍历所有可能的子矩形 for (int top = 0; top < m; top++) { for (int bottom = top; bott ...
C++ GESP 五级:滑动窗口算法详解与例题
什么是滑动窗口算法?
滑动窗口算法是一种用于处理数组/字符串子区间问题的高效技巧。它通过维护一个窗口(通常是连续的子数组/子字符串),在遍历数据时滑动这个窗口来解决问题,避免重复计算。
滑动窗口算法的基本思想
使用两个指针(left 和 right)表示窗口的左右边界
右指针向右移动扩展窗口
当窗口不满足条件时,左指针向右移动收缩窗口
在窗口滑动过程中记录需要的结果
经典例题与代码实现
例题1:无重复字符的最长子串
问题描述:给定一个字符串,找出其中不含有重复字符的最长子串的长度。
#include <iostream>#include <string>#include <unordered_set>using namespace std;int lengthOfLongestSubstring(string s) { int n = s.length(); if (n == 0) return 0; unordered_set<char> windo ...
初探动态规划
动态规划(dynamic programming)是一个重要的算法范式,它将一个问题分解为一系列更小的子问题,并通过存储子问题的解来避免重复计算,从而大幅提升时间效率。
在本节中,我们从一个经典例题入手,先给出它的暴力回溯解法,观察其中包含的重叠子问题,再逐步导出更高效的动态规划解法。
给定一个共有 nnn 阶的楼梯,你每步可以上 111 阶或者 222 阶,请问有多少种方案可以爬到楼顶?
如下图所示,对于一个 333 阶楼梯,共有 333 种方案可以爬到楼顶。
本题的目标是求解方案数量,我们可以考虑通过回溯来穷举所有可能性。具体来说,将爬楼梯想象为一个多轮选择的过程:从地面出发,每轮选择上 111 阶或 222 阶,每当到达楼梯顶部时就将方案数量加 111 ,当越过楼梯顶部时就将其剪枝。代码如下所示:
/* 回溯 */void backtrack(vector<int> &choices, int state, int n, vector<int> &res) { // 当爬到第 n 阶时,方案数量加 1 if ...
中考英语 as+…+as 用法大全(零基础版)
一、基础核心用法:原级比较
as + 形容词/副词原级 + as 是英语中最基础的原级比较结构,表示 " 和……一样……"。
1.1 肯定句形式
结构:A + 动词 + as + 形容词/副词原级 + as + B
含义:A 和 B 在某方面程度相同
例句:
He is as tall as his father.(他和他爸爸一样高。)
She runs as fast as a rabbit.(她跑得和兔子一样快。)
This book is as interesting as that one.(这本书和那本书一样有趣。)
1.2 否定句形式
结构 1:A + 动词 + not + as + 形容词/副词原级 + as + B
结构 2:A + 动词 + not + so + 形容词/副词原级 + as + B
含义:A 在某方面不如 B(第二种形式更常用)
例句:
He is not as/so tall as his father.(他不如他爸爸高。)
She does not study as/so hard as ...
手工计算平方根的方法
读者需要已经掌握乘法、除法、加法、减法,并且知道什么是平方数(例如 2×2=42 \times 2 = 42×2=4,4 就是 2 的平方)。
什么是平方根
一个数的平方根,就是 哪个数乘自己等于这个数。
例:3×3=93 \times 3 = 93×3=9,所以 9 的平方根是 3。
例:4×4=164 \times 4 = 164×4=16,所以 16 的平方根是 4。
平方根用符号 x\sqrt{\phantom{x}}x 表示。例如 9=3\sqrt{9}=39=3,16=4\sqrt{16}=416=4。
有些数的平方根不是整数,例如 2\sqrt{2}2。1×1=11 \times 1 = 11×1=1 太小,2×2=42 \times 2 = 42×2=4 太大,所以 2\sqrt{2}2 在 1 和 2 之间,大约是 1.414。
下面学习四种手工计算平方根的方法。
方法一:分解质因数法(得到最简根式)
这种方法用于把平方根写成 整数乘以根号 的形式,不直接算出小数。
第 1 步:分解质因数
把根号里面的数写成质数相乘。质数 ...
三角函数
前言
三角函数是贯穿数学、物理、工程、计算机的核心工具。
本文以最清晰、最系统、最严谨的结构,从零基础开始,逐步深入到大学精通水平,适合小学生、中学生、大学生、教师与研究者使用。
第一部分 入门篇(小学·零基础)
1 直角三角形是什么
有一个角等于 90∘90^\circ90∘ 的三角形,叫做直角三角形。
直角:90∘90^\circ90∘
斜边:直角所对的边,永远最长
对边:对着某个锐角的边
邻边:挨着某个锐角的边
2 三角函数的本质
三角函数就是直角三角形中,角与边的比值。
小学只需要认识三个最基本的比:
正弦、余弦、正切。
第二部分 基础篇(初中·会计算)
1 三个基础函数定义
对任意锐角 θ\thetaθ:
正弦
sinθ=对边斜边\sin\theta=\frac{\text{对边}}{\text{斜边}}
sinθ=斜边对边
余弦
cosθ=邻边斜边\cos\theta=\frac{\text{邻边}}{\text{斜边}}
cosθ=斜边邻边
正切
tanθ=对边邻边\tan\theta=\frac{\text{对边}} ...
深度优先搜索(DFS)与广度优先搜索(BFS)竞赛复习资料
1.1 DFS 与 BFS 算法概述
1.1.1 什么是搜索算法
搜索算法是一类用于遍历或搜索树/图的算法,按照一定的规则访问图中的每个节点恰好一次。在信息学竞赛中,搜索算法是解决组合优化、状态空间探索等问题的基础工具。搜索算法的核心思想是将问题抽象为一个“状态图”,通过系统地枚举可能的状态来寻找目标状态。
1.1.2 DFS 与 BFS 的核心区别
比较维度
DFS(深度优先搜索)
BFS(广度优先搜索)
数据结构
栈(系统栈/手动栈)
队列
空间复杂度
O(h)O(h)O(h),hhh 为递归深度
O(2h)O(2^h)O(2h),hhh 为搜索深度
最短路径
不保证最短
保证最短(无权图)
适用场景
全排列、组合、回溯、连通块、状态空间探索
最短路径、最少步数、分层搜索、连通块
特点
一条路走到黑,走不通再回溯
层层扩散,逐层遍历
1.1.3 时间复杂度分析
邻接矩阵存储:DFS 与 BFS 均为 O(V2)O(V^2)O(V2),其中 VVV 为顶点数
邻接表存储:DFS ...





























