自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 c++小代码

今天加班把大部分常用的c++小代码/小函数写了,但是不深讲原理。如有遗漏,尽情补充。

2025-07-15 08:00:18 312

原创 树状数组与结合dp

对于正整数x,可以被分解为:为正整数)。那么这个数可以被分为log级的若干数。对于区间 [ l,r ] ,也可以被分解为log级别的小区间。我们定义lowbit(x)表示x的二进制中最低位的那个1.也就是说,lowbit(6)=2,因为如何实现lowbit呢?我们先给出结论,然后我们给予证明:对于二进制为xx...xx100...000的数p,其中左面的若干x为0/1,中间的1是其最低位的1,右边的都是0。

2025-07-14 11:31:15 1041

原创 树状数组与结合dp

本文介绍了树状数组的基本原理与应用。树状数组通过lowbit运算实现高效的单点修改和区间查询,时间复杂度为O(logN)。主要内容包括:1. 树状数组的实现原理,利用x&-x计算lowbit值;2. 三种基本操作:单点修改区间查询、区间修改单点查询、区间修改区间查询;3. 实际应用如逆序对统计、二维偏序问题;4. 结合动态规划的优化应用。树状数组代码简洁但思维难度较大,特别适合处理需要快速单点修改和区间查询的问题。文章还简要提及了二维树状数组及其与线段树的比较。

2025-07-14 11:14:56 918

原创 动态规划(3):数位dp与状态压缩dp

状态压缩dp,简称状压dp。状压更多与十进制无关。我们以二进制为例:对于二进制串:0010101001,我们发现第3/5/7/10位是1,其他位是0。如果我们赋予这个1一个特殊含义,比如这个位置有个人。那么我们可以用一个二进制串表示某一排的人物排列状态。设长度为m,由于每一位都是0或1,所以有种情况。如果再用十进制数x表示二进制串,则x范围是:0~。这就是状压dp!用十进制数表示某一进制串,进而表示某一种排列状态。今天浅讲一下与进制有关的dp,说实话这真的很恶心。

2025-07-11 21:17:31 886

原创 动态规划:(2):树形dp与换根dp

本文介绍了树形动态规划(DP)的基本概念和应用场景。首先通过一道热身题展示了树结构问题的解题思路,随后详细讲解了树形DP的实现方法,包括状态转移方程设计和递归求解过程。文章还介绍了换根DP技术,用于求解以所有节点为根的最优解问题,并通过例题演示了如何利用子树信息优化计算。最后,作者总结了树形DP的核心思想,并强调通过具体例题理解抽象算法的学习方法。全文以通俗易懂的方式呈现了树形DP的基本框架和典型应用。

2025-07-10 21:32:06 967

原创 动态规划(1):线性dp与其前缀优化

首先,请你记住 dp 这个名字。(加深印象中:dp、dp、dp、dp……)事实上,动态规划只是一种抽象的概念,而这里的定义也只是一个概述。(以下简称 dp)线性 dp,就是指我们借助已有的dp值,线性地去推进得到未知的 dp 值。这可以是一维线性的、二维线性的、三维线性……什么是线性呢?线性,就是指两个变量之间依赖于一种关系,即其函数图像是一条线而并非杂乱无章的。比如,y=2*x,z=,这都是线性关系。不禁想到了松弛操作,松弛是借助已有的最短路得到新的最短路。

2025-07-10 07:10:03 835

原创 贪吃蛇单人版

今天的贪吃蛇单人版不完全属于原创,也不属于转载(因为其他文章没有这个代码),而是《青少年信息学奥赛培优课程(入门篇)》黑皮书封面的代码,经过本人优化后得以运行啦。

2025-07-09 07:04:53 173

原创 图论基础(2)

本文介绍了图论中的最小生成树和最短路算法。最小生成树部分讲解了Kruskal算法(基于边权排序和并查集)和Prim算法(基于点分类和贪心),指出Kruskal更常用但Prim适用于特定场景。最短路部分对比了单源最短路的Dijkstra(稳定但无法处理负权)和SPFA(通用但效率不稳定),以及多元最短路的Floyed算法(适用于小规模图)。通过例题展示了算法应用场景,强调掌握这些基础算法对图论学习的重要性。全文以通俗易懂的语言解析算法原理,并提供代码片段辅助理解。

2025-07-07 20:16:03 774

原创 图论基础(1)

本文介绍了图论基础知识,重点讲解了图的定义、基本概念(顶点、边、无向/有向图、连通性等)和两种存储方式(邻接矩阵和邻接表)。文章详细阐述了图的DFS/BFS遍历方法及其应用场景,并通过电梯问题示例演示了BFS的实际应用。此外,还讲解了并查集的原理、实现及优化(路径压缩和启发式合并),以及拓扑排序的算法流程。最后指出后续将涉及最小生成树、最短路等更深入的图论内容。全文以通俗易懂的语言配合代码示例,系统性地介绍了图论的核心概念和基础算法。

2025-07-06 20:53:38 788

原创 DFS/BFS搜索优化

本文主要讲解DFS和BFS的搜索优化方法。DFS优化包括五种剪枝策略:优化搜索顺序(如小猫运输问题)、排除等效冗余、可行性剪枝、最优性剪枝和记忆化搜索,使用优先级递减。BFS优化则主要通过双端队列处理边权差异、Hash判重避免重复状态以及双向BFS提升效率(如电路板问题)。文章强调这些优化方法需要在实际问题中灵活应用,并预告后续将讨论图论相关的搜索内容。

2025-07-06 09:16:32 685

原创 线性字符串算法

本文介绍了四种线性字符串处理算法:1. 字符串哈希:通过将字符串转化为数值实现快速比较,预处理O(n),查询O(1),可用于子串匹配和循环节检测;2. KMP算法:利用部分匹配表优化字符串匹配,避免回溯,时间复杂度O(n+m);3. Manacher算法:专门处理回文串问题,通过预处理将偶回文转化为奇回文,线性时间求解;4. 最小表示法:通过双指针比较快速找到字典序最小的循环同构字符串。这些算法针对不同字符串问题各具优势,其中哈希应用最广,而其他算法在特定场景下效率更高。

2025-07-04 20:52:30 848 2

原创 贪心+二分+倍增,带你迅速提升!

所谓贪心,就是在对问题求解时,总是采用当前最好的选择。贪心的本质就是,根据题目要求,求最大值的时候,每步尽量求差值最大,求最小值的时候,每步尽量求差值最小。贪心方案很难想出来,尤其是赛场上,多数靠直觉,没时间证明;当然,很多时候贪心算法是不正确的,一是问题不适用贪心,二是贪心思路不正确。所以,我们有一个方法叫做——对拍。对拍,也就是写一个暴力直接的方法,输入多组不同的数据,用贪心和暴力分别去求答案,验证贪心思路是否正确。错误的贪心可能比超时的搜索拿分多哦(最擅长骗分拉啦)。

2025-07-03 21:08:32 778

原创 百术争锋,百道争鸣

好玩的原创对弈游戏

2025-05-24 13:51:04 243

原创 递归算法总结

递归讲解

2024-11-29 19:47:45 1519 6

原创 2024 csp-j 第二轮讲解+感受

2024年10月,正常迎来了csp-j竞赛的第二轮考试。虽然一等分数线是200分左右,比去年高出不少,但幸运的是前三题都很简单,轻松可以300起步。先来看一下讲解吧!

2024-11-16 11:46:32 1478 2

原创 多人游戏:能量+道具+技能,来一场酣畅淋漓的对决

第一款千行大作,多多支持呀~

2024-08-27 16:00:42 359 3

原创 入门篇书末感言

第一册小黑皮书书末感言,算是自我激励了吧

2024-04-27 17:30:23 872 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除