算法竞赛C++语言基础:从C到C++的完整指南
算法竞赛C++语言基础:从C到C++的完整指南 本文系统讲解算法竞赛中必备的C/C++语言基础知识,包括C语言核心语法、从C到C++的进阶,以及STL标准模板库的使用技巧。 📚 目录 C语言基础语法 从C到C++的转变 C++ STL标准模板库 算法竞赛常用技巧 1️⃣ C语言基础语法1.1 基本数据类型整型类型1234567891011121314151617181920212223#include <stdio.h>#include <limits.h>int main() { // 基本整型 char c = 'A'; // 1字节,-128 ~ 127 unsigned char uc = 255; // 1字节,0 ~ 255 short s = 32767; // 2字节,-32768 ~ 32767 unsigned short us = 65535; // 2字节,0 ~ 65535 int i = 2147483647; ...
动态规划算法详解:从入门到精通
动态规划算法详解:从入门到精通 动态规划(Dynamic Programming)是算法竞赛中最重要的技术之一,本文将系统讲解各类DP问题的原理、状态设计和优化技巧。 📚 目录 动态规划基础 线性DP 背包DP 区间DP 数位DP 状压DP 树形DP 轮廓线DP 🎯 动态规划基础什么是动态规划?核心思想: 将复杂问题分解为子问题,通过存储子问题的解来避免重复计算。 三要素: 最优子结构:问题的最优解包含子问题的最优解 重叠子问题:递归过程中重复计算相同的子问题 无后效性:某阶段的状态一旦确定,不受后续决策影响 DP的设计步骤: 确定状态:dp[i] 表示什么? 状态转移方程:如何从子问题推导到当前问题? 初始状态:边界条件是什么? 计算顺序:如何保证计算某个状态时其依赖的状态已计算? 动态规划 vs 贪心 vs 分治 特性 动态规划 贪心算法 分治算法 子问题 重叠 独立 独立 最优性 全局最优 局部最优 全局最优 决策 考虑所有选择 只考虑当前最优 递归求解 1️⃣ 线性DP1.1 最长上升子序列(LIS)问题描述:给定一个长度为 ...
搜索算法详解:从基础到进阶
搜索算法详解:从基础到进阶 搜索算法是算法竞赛中最常用的技术之一,本文将系统讲解各种搜索算法的原理、模板和经典例题。 📚 目录 基础搜索 广度优先搜索 BFS 深度优先搜索 DFS 剪枝优化 记忆化搜索 启发式搜索 迭代加深搜索 IDA* 双向搜索 高级技巧 1️⃣ 基础搜索1.1 广度优先搜索(BFS)算法思想: 从起点开始,按照层次顺序依次访问所有节点 使用队列(Queue)实现 保证找到的第一条路径是最短路径(在无权图中) 适用场景: 求最短路径(无权图或边权相同) 求最少步数 层序遍历 连通性问题 时间复杂度: ,其中 是顶点数, 是边数 基础模板12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include <iostream>#include <queue>#include <vector>#include <cstring>using namespace std;...
英语六级必备高频词汇500词
英语六级必备高频词汇500词 精选CET-6考试中出现频率最高的500个核心词汇,每个词配有两个实用例句,助你高效备考! 📚 使用说明 词汇分类:按字母顺序排列,便于查找 例句特点:贴近六级考试真题场景 学习建议:每天背诵20-30个词,坚持3周完成 复习方法:利用例句理解单词在语境中的用法 A 部分(40词)1. abandon /əˈbændən/ v. 放弃;抛弃 The government had to abandon its plan due to lack of funding.政府因缺乏资金不得不放弃其计划。 They decided to abandon the project after realizing it was not feasible.在意识到项目不可行后,他们决定放弃。 2. abolish /əˈbɒlɪʃ/ v. 废除;取消 Many countries have abolished the death penalty.许多国家已废除死刑。 The new government promi...
高精度算法详解:加减乘除完全指南
高精度算法详解:加减乘除完全指南 在算法竞赛中,当整数超过基本数据类型的表示范围时,就需要使用高精度算法。本文详细介绍高精度加法、减法、乘法和除法的实现原理和完整代码。 1. 高精度算法简介1.1 什么是高精度算法?高精度算法(Big Integer)是用于处理超大整数运算的算法。在 C++ 中: int 类型范围: ~ (约 ) long long 类型范围: ~ (约 ) 当数字超过这些范围时,就需要使用高精度算法。 1.2 高精度的核心思想基本原理: 用数组存储每一位数字,模拟手工运算的过程。 存储方式: 通常采用逆序存储(低位在前,高位在后),方便进位处理。 例如:数字 12345 存储为 [5, 4, 3, 2, 1] 1.3 适用场景 阶乘运算(如 ) 斐波那契数列的大数项 组合数学中的大数计算 密码学相关算法 2. 高精度加法2.1 算法思路模拟小学竖式加法: 从最低位开始逐位相加 处理进位(carry) 如果最高位有进位,需要增加一位 时间复杂度: ,其中 是较长数字的位数 2.2 图解示例1234 1 2 3 4 5+ 9 8 7 6-...
蓝桥杯算法竞赛笔记
蓝桥杯算法竞赛笔记(杂) 本文整理了蓝桥杯竞赛中常用的算法和数据结构知识点,包括前缀和、差分、双指针、二分法、位运算、递归以及常见排序算法等内容。 1.前缀和1.1前缀和原理和特点表示前缀和,前缀和 由一个用户输入的数组生成。 对于一个数组 (下标从1开始),我们定义一个前缀和数组 ,满足: 有一个重要的特征,可用于快速生成 : 可以的求数组 的一段区间的和:但是注意, 是一种预处理算法,只适用于a数组为静态数组的情况,即a数组中的元素在区间和查询过程中不会进行修改。 如果需要实现 “先区间修改,再区间查询” 可以使用差分数组,如果需要 “一边修改,一边查询” 需要使用树状数组或线段树等数据结构。 1.2实现前缀和利用前面讲过的特性:我们的数组下标均从1开始, ,从前往后循环计算即可。 123for (int i = 1,i <= n; i++) { prefix[i] = prefix[i - 1] + a[i];} 求区间和: 2.差分2.1差分的原理和特点对于一个数组 ,差分数组 的定义是:对差分数组做前缀和可以还原为原数组: 利用...
欢迎来到我的博客
👋 Hey Guys !第一次搞个人博客 ,使用 Butterfly 主题构建 ,实践起来比我想的要麻烦的多 TvT 。 📝 接下来…我会在这里记录: 学习笔记 技术分享 生活感悟 感谢大家支持 “The journey of a thousand miles begins with one step.” —- 老子





