自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 学习总结:搜索

堪称万能的解法,干就完了。 搜索概述: 搜索算法: 有目的地穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。 不同于单纯的枚举算法,有一定的方向性和目标性,并从一个状态转移到其他状态。 两种搜索: 深度优先搜索(DFS)(较常用) 基本思想:从初始状态开始,沿着搜索树检查每一层的任意一个结点,若出现目标状态,回溯上一层;若未出现,再检查下一层任一个结点,重复过程一直到最后,如果最后仍未出现目标状态,也回溯到上一层结果。回溯到上一层之后再选其他的结点检查。 重点:树状图,回溯。 实现: 总是与

2021-05-23 14:06:19 100

原创 学习总结:分组背包和二分查找

分组背包问题: 题目: 有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。这些物品被划分为若干组,每组中的物品互相冲突,最多选一件。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 算法: 每组物品有若干种策略::是选择本组的某一件,还是一件都不选。 即:先对每一组进行01背包的判断,再对每一组中的物品进行判断 状态方程: f[k][v]=max{f[k-1][v],f[k-1][v-c[i]]+w[i]|物品i属于组k}//f[k][v]表示前k组物品

2021-05-16 11:02:57 106

原创 背包dp再学习

完全背包 题意: 有N种物品和一个容量为V的背包,每种物品都有无限件可用。第i种物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使这些物品的费用总和不超过背包容量,且价值总和最大。 分析: 同01背包类似,同样是求背包价值最大的问题,区别在于“每种物品都有无限件可用”。可以转化为01背包:考虑到第i种物品最多选V/c[i]件,于是可以把第i种物品转化为V/c[i]件费用及价值均不变的物品,然后求解这个01背包问题 代码: for (i=0;i<n;i++) for (j=w[i];j&

2021-05-08 14:49:41 71

原创 初学背包dp

最基础的01背包问题: 你的背包体积已知,现有n个物品,每个物品有自己的价值和体积,求如何装使得背包内的物品价值最大。 特点: 每种物品仅有一件,可以选择放或不放 ; 与之前贪心算法的区别: 区别在于无法将物品分割,即无法用性价比的方法算; (1)若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题: (2)如果不放第i件物品,则转化为“前i-1件物品放入容量为v的背包中”,价值为f[i-1][v]; (3)如果放第i件物品,则转化为“前i-1件物品放入剩下的容量为v-c[i

2021-05-04 12:55:14 86

原创 学习总结:区间dp

这几天在做有关区间dp的题,在学习中,现在先总结一下,之后就只能靠刷题了。 概念 这里先复述一下区间dp的概念: 同样是求最优解的问题,区间dp就是在区间上进行动态规划,我们可以把大区间转化成小区间来处理,然后合并小区间的 最优解进而得出整个大区间上最优解。主要的方法有两种,记忆化搜索和递推。 一般区间DP实现代码 区间dp的格式一般相差不大: memset(dp, 0x3f, sizeof(dp)); for (int i = 1; i <= n; i++) //区间长度为1的初始化 dp[i][i

2021-04-24 12:34:11 220

原创 线性dp

前言 之前试着总结了一下线性dp的几个常见的模板,但事实上,除了少量问题(如:LIS、LCS、LCIS等)有固定的模板外,大部分都要根据实际问题来推导得出答案,这次看看一些不一样的题。 这里说一下dp题的两种基本做法: 第一种是暴力求解,是对每个子问题求其的每种情况,最终去最优的,最后再对每个子问题取最优。第二种则是对是对每个子问题直接通过if语句或者max函数根据问题需求求最优,最后再对子问题求最优。这两种方法,第一种用的比较多,因为比较好想,把所有的情况都存起来就行了,就是显得有些啰嗦;但第二种也很常见

2021-04-17 19:45:37 77

原创 动态规划/dp学习

先说一下我最近学习的感受: 现在开始了动态规划的学习,较之前的贪心算法,难度提高了。主要是问题难分析、思路难想…贪心果然是最简单的一种算法。dp问题暂时没找到什么既具体详实又普适性高的规律,只有一点基本概念的理解,对此老师给出的建议有点硬核,就是硬做。熟能生巧,培养自己做题的感觉,革命尚未成功,同志仍需努力。 我对于动态规划的一点理解: 动态规划的基本思路就是穷举,在最优子结构和无后效性的前提下,分阶段列举出所有情况,最终找到符合自己所要求的那组数据。 因为前一阶段的决策会影响后一阶段的决策,难点就在于状态

2021-04-10 17:03:14 53

原创 学习总结:贪心算法

思路: (1)先读懂题,英语阅读理解max,搞清输入输出的具体要求 (2)模拟,用最基本的的思路思考整个问题 (3)优化算法:用算法的思想简化优化 (4)多角度灵活思考:正难反易 (5)参考经典例题,回归经典例题 (6)一些数学归纳方法也很重要 模板: 头文件 例题: ...

2021-03-28 01:41:14 274

原创 学习总结:盘点错误

此次总结如何解决做题中出现的种种错误 这里写目录标题一、wrong answer:(运行结果有问题);二、Presentation Error:(细节问题);三、time limit (超时)四、runtime error五、Compilation error#六、Runtime Error(ACCESS_VIOLATION) 一、wrong answer:(运行结果有问题); 1.改算法; 2.改数据类型; 3.输入顺序不对; 4.阅读理解很重要,尤其是英语; 例如:Ruwrite a program t

2021-03-19 21:26:19 304 1

原创 学习总结:STL排序

前言:我们在编写程序的过程中,不可避免的要对数据进行排序,通过以下方法,我们能节省大量时间,并提高运行效率。 一、升: 1.sort: 头文件:#include; 定义:sort(begin,end); 如:int a[5]; sort(a,a+5);//默认升序排列; 2.set: 头文件:#include; 定义:set<data_type>set_name; 如:seta;//默认升序排列; 3.multiset: 用法与set大体相同,区别在于set不包含相同元素,而multiset可以

2021-03-13 07:28:53 207

空空如也

空空如也

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

TA关注的人

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