随笔分类 -  算法与题目积累

积累算法与题目,希望积累有一天可以发光
摘要:单调栈是用来维护最近的大于和小于关系 其实单调栈就是一个把头给封死的一个单调队列。单调队列能从两边出,但是单调栈只能从头出。 首先在看到问题的时候,不能陷入到局部思考,首先先想原问题的性质。这个最大矩形有什么限制呢?高肯定是所覆盖中的最矮的木板。最优解肯定是以某一块木板最为高度,现在枚举每一块木板, 阅读全文
posted @ 2022-03-07 22:08 prize 阅读(221) 评论(0) 推荐(0)
摘要:http://bailian.openjudge.cn/practice/4115/ 发现了没有这题包括之前的题目在广搜里面都涉及到了状态这个词。而状态里面的变量是会随着广搜的过程和题目的限制发生相应的变化的。比如上一题的迷宫问题状态中就有x与y坐标和父节点这几个参数。这一题由于多了一个查克拉的限制 阅读全文
posted @ 2022-02-26 21:29 prize 阅读(80) 评论(0) 推荐(0)
摘要:一,正常的迷宫问题 Description 定义一个二维数组: int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, }; 它表示一个迷宫,其中的1表示墙壁,0表示可 阅读全文
posted @ 2022-02-26 20:12 prize 阅读(471) 评论(0) 推荐(0)
摘要:首先先来一题例题来解释做一个引子吧: 比如:从3开始先选择一条路来走的话,从3到2然后继续往后走到1到0,在1就不能继续往后走了,就开始回溯了。从0到1,再到2,发现2还可以走到4然后再从4走到5,再返回4返回到3,再从3到6再到5。 这个地方有提到用栈来优化深度优先搜索。这个我觉得可以想想,比如走 阅读全文
posted @ 2022-02-26 10:18 prize 阅读(536) 评论(0) 推荐(0)
摘要:翻译过来就是: 解题思路: 把这个二维的问题转化为转化为一维的问题。如上图所示,只需要雷达安装在这个区间中的话,雷达就能够覆盖到上面的岛屿。现在这个问题又变成区间调度问题了。但是还有一个问题就是在这个区间中说明位置上放置雷达呢?这个区间可是有无数个点,枚举肯定不可能。解决方向如下: 说实话作为一个小 阅读全文
posted @ 2022-02-23 21:18 prize 阅读(91) 评论(0) 推荐(0)
摘要:贪心解法: 这里补充一个优先队列priority_queue。附上一篇博客:https://blog.csdn.net/weixin_36888577/article/details/79937886这里面有比较全的优先队列的内容 这个地方用优先队列的时间复杂度低,否则每一次找畜栏的话都要遍历一边所 阅读全文
posted @ 2022-02-17 21:29 prize 阅读(62) 评论(0) 推荐(0)
摘要:本文作为学习笔记,文章来自:https://www.cnblogs.com/heaad/archive/2010/12/23/1914725.html 遗传算法 ( GA , Genetic Algorithm ) ,也称进化算法 。 遗传算法是受达尔文的进化论的启发,借鉴生物进化过程而提出的一种启 阅读全文
posted @ 2022-02-17 19:45 prize 阅读(486) 评论(0) 推荐(0)
摘要:首先是入门我这里直接把https://www.cnblogs.com/heaad/archive/2010/12/23/1914725.html的博客搬过来作为学习笔记,这个是我看过的最通俗的模拟退火入门了: 一. 爬山算法 ( Hill Climbing ) 介绍模拟退火前,先介绍爬山算法。爬山算 阅读全文
posted @ 2022-02-17 19:39 prize 阅读(90) 评论(0) 推荐(0)
摘要:先从一题例题来说吧: 输入第一行是箱子数量和最大承受重量,往后得到四行每一行的信息是一箱糖果的价值,以及重量。 输出是最大价值的糖果。 解题思路: 按照礼物的价值与重量比(也就是单位糖果的价值)从大到小选取礼物,对每一个礼物都尽可能的多装,直到装满为止。 #include <iostream> #i 阅读全文
posted @ 2022-02-15 10:10 prize 阅读(49) 评论(0) 推荐(0)
摘要:ROADS(POJ 1724) 解题思路: 从城市1开始深度优先遍历整个图,找到所有能过到N的走法,选一个最优的 代码(1): #include <iostream> #include <vector> #include <cstring> using namaspace std; int K, N 阅读全文
posted @ 2022-02-14 11:34 prize 阅读(95) 评论(0) 推荐(0)
摘要:poj(1196)踩方格 【题目描述】有一个方格矩阵,矩阵边界在无穷远处。我们做如下假设: a、每走一步时,只能从当前方格移动一格,走到某个相邻的方格上; b、走过的格子立即塌陷无法再走第二次; c、只能向北、东、西三个方向走; 请问:如果允许在方格矩阵上走n步,共有多少种不同的方案。2种走法只要有 阅读全文
posted @ 2022-02-12 16:21 prize 阅读(312) 评论(0) 推荐(0)
摘要:首先这一题的难度不是很大,但是也要用到位运算的知识,这个让我想到之前学的位运算遍历,这里也是用位运算来判断一个点墙的数目。这题思路会有点不好找,但是整体题目难度并不大,适合深搜的入门。 图(一)是一个城堡的地形图。请你编写一个程序,计算城堡一共有多少房间,最大的房间有多大。城堡被分割成mn(m≤5 阅读全文
posted @ 2022-02-12 14:23 prize 阅读(171) 评论(0) 推荐(0)
摘要:第一种是递归解法: #include <iostream> using namespace std; int a[30], N; int way(int w, int k) { //从k中物品中选择一些,凑成体积w的做法数目 if (w == 0) return 1; if (k <= 0) ret 阅读全文
posted @ 2022-02-09 21:40 prize 阅读(169) 评论(0) 推荐(0)
摘要:描述 Description trs喜欢滑雪。他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示每块地形。为了得到更快的速度,滑行的路线必须向下倾斜。 例如样例中的那个矩形,可以从某个点滑向上下左右四个相邻的点之一。例如24-17-16-1,其实25-24-23…3-2- 阅读全文
posted @ 2022-02-09 19:53 prize 阅读(70) 评论(0) 推荐(0)
摘要:"Help Jimmy" 是在下图所示的场景上完成的游戏。 场景中包括多个长度和高度各不相同的平台。地面是最低的平台,高度为零,长度无限。 Jimmy老鼠在时刻0从高于所有平台的某处开始下落,它的下落速度始终为1米/秒。当Jimmy落到某个平台上时,游戏者选择让它向左还是向右跑,它跑动的速度也是1米 阅读全文
posted @ 2022-02-09 14:10 prize 阅读(66) 评论(0) 推荐(0)
摘要:首先子问题是啥??其实就是要找最右边的加号。上面这段其实就体现了这个子问题。 解题思路: 把在n个数字中插入m个加号的问题化为前i个数字中插入m-1个加号再加上从第i+1个数到第n个数字所组成的数。i的范围是从m一直到n-1,这个范围内取最小值。 这个预处理其实也就是把num二维数组给预处理算出来。 阅读全文
posted @ 2022-02-08 18:21 prize 阅读(99) 评论(0) 推荐(0)
摘要:动规的常用的两种形式: 1,递归型: 优点:直观,容易编写 缺点:可能会因为层数太深爆栈,调用函数带来额外的时间开销。无法使用滚动数组节省空间。总体来说,比递推型慢。 2,递推型: 效率高,有可能使用滚动数组节省空间。 (poj1458) 现在就按着之前动规的思路来 递推公式: 这个递推公式还是简单 阅读全文
posted @ 2022-02-08 16:42 prize 阅读(106) 评论(0) 推荐(0)
摘要:后面就根据之前学的动态规划的步骤往下走: 1.寻找子问题: 其实就是前n个元素的最长子序列可能有多个序列有x个最长上升子序列,但是不是每一个序列的最后一个数都是比n+1个数下,所以会受到影响。 接下来换一个子问题的形式: 2,确定状态: 3,确定状态转移方程: 解释一下:其实就是第k个数最大上升子序 阅读全文
posted @ 2022-02-08 10:32 prize 阅读(37) 评论(0) 推荐(0)
摘要:这篇博客是动态规划的最入门的内容,具体的一些题目的练习留在后面的博客中来写,这里只介绍最基本的内容。 首先先引入一题例题:数字三角形(poj 1163) 题目描述:在上面的数字三角形中寻找一条从顶部到底部的路径,使路径上所经历的数字之和最大。路径上每一步只能往左下走,或者右下走。只需求出这个最大和即 阅读全文
posted @ 2022-02-07 17:00 prize 阅读(56) 评论(0) 推荐(0)
摘要:题目描述:考虑1,2,…,n (n <= 100000)的排列i1,i2,…,in,如果其中存在j,k,满足 j < k 且 ij > ik, 那么就称(ij,ik)是这个排列的一个逆序。一个排列含有逆序的个数称为这个排列的逆序数。例如排列 263451 含有8个 逆序(2,1),(6,3),(6, 阅读全文
posted @ 2022-02-06 09:09 prize 阅读(391) 评论(0) 推荐(0)