
算法
文章平均质量分 63
详细的算法,C++实现
不怕困难的博客
记录题解,心得,算法和数据结构的博客
展开
-
中位数C++题解
他手里有一个串,每次会实施三种操作中的一种。原创 2023-10-01 20:47:00 · 372 阅读 · 0 评论 -
C++ __builtin_popcount函数作用
_builtin_popcount函数是系统自带的一个返回值是int/long/long long二进制'1'的个数的函数。拿__builtin_popcount(unsigned int n)举个例子。原创 2023-08-02 20:30:11 · 1127 阅读 · 0 评论 -
广度优先搜索算法带图详解
常常我们有这样一个问题,从一个起点开始要到一个终点,我们要找寻一条最短的路径,从图2-1举例,如果我们要求V0到V6的一条最短路(假设走一个节点按一步来算)原创 2022-07-27 15:48:18 · 11357 阅读 · 5 评论 -
AcWing 101场周赛第二题栈题解
所有测试点满足 1≤n≤2×105,每个给定字符串的长度范围 [1,10]。所有操作完成后,请你按照从栈顶到栈底的顺序,依次输出栈内所有元素。接下来 n 行,每行包含一个由小写字母构成的非空字符串。按照从栈顶到栈底的顺序,依次输出栈内所有元素。前 55 个测试点满足 1≤n≤10。你需要依次进行 n 个操作。给定一个栈,初始时栈为空。第一行包含整数 n。原创 2023-04-29 20:30:25 · 126 阅读 · 0 评论 -
C++动态规划模板汇总大全
1.背包模型2.状态机模型3.状态压缩DP4.区间DP5.树形DP6.数位DP7.单调队列优化DP8.斜率优化DP(因为我还没学,所以暂时不更新,请见谅)原创 2023-04-29 14:07:41 · 1914 阅读 · 1 评论 -
C++线性筛——筛质数详解
质数也叫素数。质数是指在大于1的中,除了1和它本身以外不再有其他的自然数。稍加修改就可以减少很多时间复杂度。原创 2023-04-08 15:56:24 · 1504 阅读 · 1 评论 -
树形DP问题C++详解
在学习树形dp之前我们先了解一下什么是树。树简单来说就是连通的无环图。原创 2023-03-31 21:50:27 · 784 阅读 · 0 评论 -
AcWing 4877. 最大价值
和多重背包特别像,s就是l / h;n++就行了acwing5。满足以上所有条件的前提下,所有装入物品的总价值尽可能大。种物品:重量忽略不计,在装入时没有重量限制。第 1∼m种物品:第 i种物品的单个重量为 h。所有装入物品的总体积不得超过背包容量。,如果该种物品的装入总重量超过 l。所有存在重量限制的物品均不得超重。一个整数,表示总价值的最大可能值。现在,请你挑选物品装入背包,要求。种物品,每种物品都有无限多个。第 i 种物品的体积为。输出总价值的最大可能值。行,每行包含四个整数。原创 2023-03-25 20:20:06 · 216 阅读 · 2 评论 -
AcWing1049.大盗阿福题解
dp模型——状态机模型C++详解1049. 大盗阿福阿福是一名经验丰富的大盗。趁着月黑风高,阿福打算今晚洗劫一条街上的店铺。这条街上一共有 N家店铺,每家店中都有一些现金。阿福事先调查得知,只有当他同时洗劫了两家相邻的店铺时,街上的报警系统才会启动,然后警察就会蜂拥而至。作为一向谨慎作案的大盗,阿福不愿意冒着被警察追捕的风险行窃。他想知道,在不惊动警察的情况下,他今晚最多可以得到多少现金?输入格式输入的第一行是一个整数 T,表示一共有 T组数据。原创 2023-03-05 19:54:05 · 562 阅读 · 0 评论 -
dp模型——状态机模型C++详解
状态机顾名思义跟状态有关系,但到底有什么关系呢。在实际解决的时候,通常把状态想成节点,状态的转换想成有向边的有向图,我们来举个例子。相信大家都玩过类似枪战的游戏(没玩过的也听说过吧), 他的每一个人物基本都有几个状态:站立,蹲下,跑步和射击。这就可以构成一个简单的状态机图了。状态机模型我们拿例题来分析一下。原创 2023-03-05 19:48:30 · 1269 阅读 · 3 评论 -
高精度加法【c++实现】超详细讲解
大家一定都知道int和long long是有极限的(如下表),如果超了就无法计算正确结果了,那该用什么方法来计算呢?这就是我们今天要说的算法———高精度算法。如果这一位大于9,那么就把他的上一位加1,本位mod10。正常我们列的加法算式是这样的(如下图),这也是我们的期待方式,但是计算机能识别吗?但是这样的代码不仅时间复杂度高,而且代码还十分复杂。如果我们正常遍历,从0开始的话,就会变成这样子(如下图)。这显然与我们的正确答案224相距甚远,肯定不是这样的。原创 2023-01-14 14:06:41 · 2422 阅读 · 3 评论 -
高精度减法【c++】超详细讲解
大家学过高精度加法之后,可能已经知道高精度减法的实现方法了吧如果你还没有学过高精度加法的话,请点击这里(很详细的)—>原创 2023-01-16 20:53:30 · 1854 阅读 · 0 评论 -
深搜的剪枝技巧C++详解
众所周知,搜索的算法时间复杂度大多是指数级的。即使是简单的不加优化的搜索,其时间效率也低得让人无法忍受,难以满足我们竞赛时对程序的运行时间的要求。所以建立算法结构之后,有一种对程序进行优化的基本方法——剪枝。所谓剪枝,就是通过某种判断,避免不必要的的遍历过程,形象的过程。原创 2023-02-06 11:03:35 · 2237 阅读 · 2 评论 -
基础算法模板汇总(大全)
有高精度,深搜,广搜,排序,前缀和,差分,离散化,二分原创 2023-02-09 10:36:08 · 174 阅读 · 0 评论 -
AcWing代码模板
常用代码模板1——基础算法常用代码模板2——数据结构常用代码模板3——搜索与图论常用代码模板4——数学知识原创 2023-02-20 16:08:56 · 279 阅读 · 0 评论 -
前缀和C++超详细讲解(有例题)
,会TLE的很惨,但是我们有没有想过用一个s数组,s[i]表示从1-i的a的和,s[i] = a[i] + s[i - 1]。这样l-r的和就是s[r] - s[l - 1]的值了,时间复杂度瞬间减少,变成O(2 * n)。紫色表示(x-1,y-1)前缀和,用sum[x-1][y-1]表示。到这里,你已经学会了前缀和。蓝色表示(x,y-1)前缀和,用sum[x][y-1]表示。黄色表示(x-1,y)前缀和,用sum[x-1][y]表示。红色点表示(x,y)前缀和,用sum[x][y]表示。原创 2023-02-13 16:39:37 · 660 阅读 · 0 评论 -
高精度除法【c++实现】超详细讲解
高精度除低精度,原理是模拟竖式除法,和高精度其他算法一样都可以手动计算来感受一下实现方法。下面来一个较为简单的例子:1532 ÷ 21 = 72......20。高精度算法分为两种,高精除以低精和高精除以高精。不要看都是除法,就认为原理类似,其实是有很大差距的。让我们一起来学习吧!有句话说在前面,如果除数等于0,就不要算了,不成立。原创 2023-02-14 09:06:18 · 2899 阅读 · 5 评论