算法
算法
王江奎
这个作者很懒,什么都没留下…
展开
-
算法学习——贪心篇
贪心选择是指应用同一规则,将原问题变为一个相似但是规模更小的问题,而后的每一步都是当前看起来最佳的选择,且这种选择只依赖于已做出的选择,不依赖于未作出的选择。贪心算法说起来容易,操作起来却经常有点玄学。(我怎么想的到)在这里整理一些常见的贪心题目选择不相交区间问题这种问题一般具体题目大概就是时间安排,场地安排之类(有一个量不能被重复使用)。解决这种问题的方法为按照对这个量使用的截至时...原创 2019-01-20 23:28:53 · 171 阅读 · 0 评论 -
棋盘问题——DFS
【题目描述】在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。Input输入含有多组测试数据。每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n <= 8 , k <...原创 2019-07-23 08:51:37 · 648 阅读 · 0 评论 -
贪心算法-区间选点问题-种树
【题目描述】一条街道的一边有几座房子。因为环保原因居民想要在路边种些树,路边的地区被分割成n块,并被编号为1~n。每块大小为一个单位尺寸且最多可总一棵树。每个居民想在门前种些树并制定了三个数b,e,t,这三个数代表居民想在b和e之间最少种t棵树,当然b<=e,t<=e-b+1,允许居民想种树的子区域可以交叉,由于资金短缺的原因,环保部门想请你求出能够满足所有居民的种树要求的书的最少数量...原创 2019-07-21 11:09:00 · 1143 阅读 · 0 评论 -
深度搜索剪枝——数的划分
【题目描述】将整数n分成k份,且每份不能为空,问有多少种分法?【输入格式】两个整数n,m(6<n<=200,2<=m<=6)【输出格式】输出不同的分法数【样例输入】7 3【样例输出】4对于这种搜索题,关键就在于剪枝:确定搜索的顺序、搜索的上下界,剪枝函数等等这道题数据比较小,之间判断搜索的上下界就可以解决。因为分法是组合,即没有顺序,为了提高效率,我们人为地规定...原创 2019-07-21 10:19:50 · 259 阅读 · 0 评论 -
贪心算法——选择不相交区间问题
题目描述:设有n个活动的集合,其中每个活动都要求使用同一个资源,而在同一时间内只有一个活动能够使用这一资源,每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi(si<fi),如果选择了活动i,则他在时间区间[si,fi)占用资源。求最多可以进行多少个活动。【输入格式】第一行一个正整数n(n<1000),接下来n行,每行两个整数si和fi【输出格式】输出尽可能多的相互兼...原创 2019-07-20 17:07:04 · 610 阅读 · 0 评论 -
分块思想
今天学习了一个算法(这个应该叫做算法吧?)叫做分块(和莫队,但是莫队还没有搞懂,搞懂再来写吧)听起来很高级,蒟蒻表示瑟瑟发抖。但是学完发现怎么那么像是一种变相的暴力呢。分块思想:假如你要处理一个很长区间上的问题,并且有很多个查询(以及修改),暴力显然已经不可行了。但是暴力效率低下的主要原因是因为他没有很好的利用每次处理后得到的信息而选择重新处理,而进行优化的关键就是如何有效的储存每次处理后的信...原创 2019-03-23 20:47:57 · 433 阅读 · 0 评论 -
动态规划浅谈
接触动态规划这么久了,简单谈一下自己对动态规划的理解。动态规划名字听起来好像比比较高大上,可是事实上,人家就是比较高大上。(抖个机灵)刚开始接触动态规划的时候觉得好可怕,这么复杂的问题我怎么能想的出来,这样的问题计算机怎么能够解决?我觉得动态规划不是一种准确的算法,而是一种思想,一种特殊的搜索思想。这种思想的本质是将比较复杂的搜索问题变成一个递推题,而递推公式就是我们常常提到的状态转移方程(...原创 2019-01-28 23:09:23 · 174 阅读 · 0 评论 -
二分(三分)+快速幂
之前学习的二分,现在感觉突然理解许多,补一下总结首先,二分能够解决什么样的问题呢,个人认为,二分能够快速解决已经知道答案范围(线性)但是不知道确切答案的问题,例如在一个有序序列中查找某一元素出现的(最早,最晚)位置,求某单调(或在给定区间上单调)函数的零点,最大化最小值或者最小化最大值等等二分的模板大体如下:int l=x;//x表示元素可能出现的最小(最左边)的情况int r=y;//y...原创 2019-01-27 22:43:02 · 214 阅读 · 0 评论 -
拓扑排序
拓扑排序问题的特征是有较多的先后顺序事件然后需要求总的事件顺序等,比如排有先修课要求的课表等,经常需要将他们抽象为图解决问题。为了节省空间,在不适用STL(其实是不会用)的情况下经常使用用结构体和数组模拟实现的邻接表来存储图struct node{ int from,to,next,value;}E[MAXM];int head[MAXN];//存储以该节点为开头的边int edge...原创 2019-01-26 22:56:26 · 174 阅读 · 0 评论 -
并查集
今天学习了以前没有接触过的并查集,差点就酿成0ac惨案,还是总结一下。一般的并查集就是通过一个树来储存该元素所属集合,一般来讲为了优化都会进行路径压缩(虽然听起来很高大上但其实就是将一棵树变成了只含有一个父节点的很简单的树)(虽然好像有时候不能进行路径压缩需要按秩合并,但是我现在还不会)。一般需要一个数组存储父节点就可以了,种类并查集及带权并查集还需要其他数据结构进行维护(现在还不太会)。...原创 2019-01-25 23:43:35 · 204 阅读 · 0 评论 -
Dungeon Master——BFS
【题目描述】You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of unit cubes which may or may not be filled with rock. It takes one minute to move one unit north...原创 2019-07-23 08:56:05 · 144 阅读 · 0 评论