
算法
文章平均质量分 73
qzq2514
越努力,越幸运~
博客地址:http://blog.youkuaiyun.com/qzq2514
github: https://github.com/qzq2514
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态规划-股票利益最大化问题
股票利益最大化问题:给定股票价格序列,规定(买入、卖出)的最多次数K,求最大的总利润。(一次买入和卖出为完整交易)1.K=1 Leetcode121记录遍历到第i天的时候之前的股票价格最小值,那么如果当天卖出,能取得最大利润肯定是当前股票价格减去之前最低的股票价格最后取遍历的最大值。# 股票利益最大化问题:给定股票价格序列,规定(买入、卖出)的最多次数K,求最大的总利润。(一次买入和卖...原创 2020-02-27 22:21:59 · 2492 阅读 · 0 评论 -
神经网络权重初始化问题思考
众所周知,神经网络权重不能初始化为常数,更不能全部初始化为0。依据反向传播的思想可知:**每个权重的更新梯度与其之后相关的权重、神经元的输入、输出和其前一个神经元的输出有关(这里不进行具体推导)。**网上很多相关文章说不能初始化为0或者常数,这个结论肯定是正确的。但是原因却不是这样会导致权重不更新了。其实完全错误,只要有误差,就会更新。现假设神经网络的通用形式形式如下:有一个输入层,n个隐藏层...原创 2020-02-26 16:01:22 · 1958 阅读 · 0 评论 -
SGD、Momentum、RMSProp、Adam等优化算法比较
算法名称公式解释梯度下降(GD)θt=θt−1−α⋅▽θt−1J(θt−1)\theta_t=\theta_{t-1}−α⋅▽_{\theta_{t-1}}J(\theta_{t-1})θt=θt−1−α⋅▽θt−1J(θt−1)使用所有数据进行梯度下降随机梯度下降(SGD)θt=θt−1−α⋅▽θt−1J(θt−1;x(i)y(i))\theta_t=...原创 2020-02-23 00:05:54 · 674 阅读 · 0 评论 -
蓝桥杯之寒假作业
寒假作业:现在小学的数学题目也不是那么好玩的。看看这个寒假作业: □ + □ = □ □ - □ = □ □ × □ = □ □ ÷ □ = □ 每个方块代表1~13中的某一个数字,但不能重复。比如: 6 + 7 = 13 9 - 8 = 1 3 * 4 = 12 10 / 2 = 5以及: 7原创 2017-04-06 17:50:50 · 6045 阅读 · 9 评论 -
ArcSoft's Office Rearrangement
ArcSoft's Office RearrangementTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 1133 Accepted Submission(s): 428Problem Description原创 2017-05-01 22:46:21 · 627 阅读 · 0 评论 -
BFS和DFS下的拓扑排序
DAG是一种有向无环图,可以用来表示各种事务执行的先后顺序,而拓扑排序的作用就是找到恰当的工作顺序,使得对于所有有向边,都保证顶点u出现在顶点v之前。具体的拓扑排序的形象解释我这里就不多废话了,下面直接附上两种搜索形式下的拓扑排序: 1.广度优先搜索实现的拓扑排序:#include#include#includeusing namespace std;#define Max原创 2017-03-13 22:26:41 · 1558 阅读 · 1 评论 -
蓝桥杯之分糖果
标题:分糖果 有n个小朋友围坐成一圈。老师给每个小朋友随机发偶数个糖果,然后进行下面的游戏: 每个小朋友都把自己的糖果分一半给左手边的孩子。一轮分糖后,拥有奇数颗糖的孩子由老师补给1个糖果,从而变成偶数。反复进行这个游戏,直到所有小朋友的糖果数都相同为止。 你的任务是预测在已知的初始糖果情形下,老师一共需要补发多少个糖果。【格式要求】 程序首先读入一个整数N(原创 2017-03-29 18:21:37 · 923 阅读 · 2 评论 -
Leetcode-42 Trapping in Rain Water
题目: 示例输入: 示例输出:12 (表示积水的宽度)原创 2017-03-18 11:18:13 · 492 阅读 · 0 评论 -
Leetcode-11 Container With Most Water
题目: 示例输入: 示例输出:原创 2017-03-19 19:23:53 · 407 阅读 · 0 评论 -
蓝桥杯之振兴中华
标题: 振兴中华 小明参加了学校的趣味运动会,其中的一个项目是:跳格子。 地上画着一些格子,每个格子里写一个字,如下所示:(也可参见p1.jpg)从我做起振我做起振兴做起振兴中 起振兴中华 比赛时,先站在左上角的写着“从”字的格子里,可以横向或纵向跳到相邻的格子里,但不能跳到对角的格子或其它位置。一直要原创 2017-03-20 21:13:34 · 651 阅读 · 1 评论 -
名人问题
题目: 在一次聚会中,你想找出来聚会的人中所有的名人,名人就是别人认识他,而他不认识别人。现在在聚会的k个人中,输入邻接矩阵adj[i][j]用来表示他们之间的关系,其中 adj[i][j]=1表示i认识j,adj[i][j]=0表示i不认识j。输入: 第一行输入k,表示一共有k个人,编号从1到n 之后k行输入邻接矩阵输出; 输出所有名人原创 2017-02-27 23:08:17 · 5280 阅读 · 3 评论 -
蓝桥杯决赛之危险系数
标题:危险系数 抗日战争时期,冀中平原的地道战曾发挥重要作用。 地道的多个站点间有通道连接,形成了庞大的网络。但也有隐患,当敌人发现了某个站点后,其它站点间可能因此会失去联系。 我们来定义一个危险系数DF(x,y): 对于两个站点x和y (x != y), 如果能找到一个站点z,当z被敌人破坏后,x和y不连通,那么我们称z为关于x原创 2017-04-27 20:12:27 · 1286 阅读 · 0 评论 -
Car
Car Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)原创 2017-05-03 18:24:01 · 431 阅读 · 0 评论 -
扫雷
扫雷 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)原创 2017-04-23 18:10:16 · 739 阅读 · 1 评论 -
蓝桥杯决赛之排日程
【编程题】(满分32分) 某保密单位机要人员 A,B,C,D,E 每周需要工作5天,休息2天。 上级要求每个人每周的工作日和休息日安排必须是固定的,不能在周间变更。 此外,由于工作需要,还有如下要求: 1. 所有人的连续工作日不能多于3天(注意:周日连到下周一也是连续)。 2. 一周中,至少有3天所有人都是上原创 2017-04-24 23:16:23 · 751 阅读 · 0 评论 -
蓝桥杯决赛之方块填数
【编程题】(满分33分) “数独”是当下炙手可热的智力游戏。一般认为它的起源是“拉丁方块”,是大数学家欧拉于1783年发明的。 如图[1.jpg]所示:6x6的小格被分为6个部分(图中用不同的颜色区分),每个部分含有6个小格(以下也称为分组)。 开始的时候,某些小格中已经填写了字母(ABCDEF之一)。需要在所有剩下的小格中补填字母。原创 2017-04-26 12:36:21 · 736 阅读 · 0 评论 -
免费馅饼
免费馅饼 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)原创 2017-05-22 18:27:27 · 474 阅读 · 0 评论 -
初等数据结构之栈
今天介绍的是栈的知识。其实稍微了解一点的同学,用一句话就可以概括栈的特点,就是后入先出,也就是后保存的数据,在需要提取数据时是最先被提取的。现在使用push(x)方法表示向栈中添加数据,pop()表示弹出最新进栈的数据,top表示栈顶的元素,则下面用图片表示进栈入栈时栈中数据的变化情况:原创 2017-01-18 23:02:38 · 509 阅读 · 3 评论 -
dfs算法入口参数浅析
好久不写博客,懒了也胖了。之前半年一直在忙着保研的事情,算法也落下了不少,最近仓促准备蓝桥杯,刷了几道题目。之前一致认为dfs算法算是我用的比较熟练的,但是最近遇到了一些相关的题目,让我不得不重新审视这个算法。dfs算法就不多介绍,一句话说他就是"一条路走到底,不撞南墙不回头"的算法,本文主要研究dfs算法的入口函数时的参数选择问题。问题引入: 用dfs求排列组合的结果,例如求C(13,5),即...原创 2018-03-24 15:22:55 · 1506 阅读 · 0 评论 -
约瑟夫环
约瑟夫环问题:有n个人,编号依次为:1,2,3...n,这n个人按照编号顺序排成一个圈,现指定一个起始编号start(1<=start<=n)和退出编号m(m>=1),表示从第start个人往后循环依次按照1,2...m的顺序叫号,叫到m的人退出当前圈,并且下一个人从0开始叫号,并下一次叫到m的人继续退出当前圈,以此往复,现在求最后一个退出的人的编号是多少?解法一:...原创 2019-09-10 00:34:09 · 295 阅读 · 0 评论 -
链表环问题
链表环问题:给定一个链表,判断该链表中是否有环?如果有的话,环的长度是多少?环的入口是哪个节点?解决:使用快慢指针策略,两个指针都从头指针出发,快指针每次走两步,慢指针每次走一步。1.判断链表是否有环?如果快慢节点相遇,那么链表有环。2.如果有环,环的长度是多少?快慢指针相遇后,固定其中一个指针(如快指针)不动,另一个指针(即慢指针)以步长为1前进,下次相遇之前,慢指针...原创 2019-09-15 23:54:33 · 332 阅读 · 0 评论 -
传送带装载货物的最优解问题
题目:传送带上依次送来了重量分别为:Wi(i=0,1,2,3.......,n-1)的n个货物。现在要将这些货物装到k辆卡车上。每辆卡车可装载的货物数大于等于0,但货物的重量总和不得超过卡车的最大运载量P.所有卡车的最大最大运载量一致。请编写一个程序,输入n,k,Wi,求出装载全部货物所需的最大运载量P的最小值。输入:第一行输入n和整数k,用空格隔开。接下来n行输入n个整数Wi,每个数占一行。输出:输出P的最小值,占一行。限制:1<=n<=10000 1<=k<=10原创 2017-02-11 16:08:01 · 3307 阅读 · 0 评论 -
优先队列之加油站最小加油次数
分析:这里最笨的方法是使用递归下的深度优先搜索(为啥感觉好像每个题目都可以深度搜索一样,蜜汁尴尬),对于每个加油站,有加油和不加油两个选择。然而在看到限制条件中1 我们结合下实际情况:我们想象下,车子在还有油时,不断向前行驶,每遇到一个加油站i时,都把Bi量的油放在车上,注意这并不是给油缸加油,只是相当于放在后备箱了,然后在车子没有油时,从后备箱选择一个油量最大的进行加油,这样不原创 2017-02-22 21:52:00 · 2819 阅读 · 0 评论 -
有放回抽签求和解法的层层优化
题目:将写有数字的n个纸片放入口袋中,你可以从口袋中抽取4次纸片,每次记下纸片上的数字后都将其放回口袋中。在抽取前心中记住一个数字m,编写一个程序,判断当纸片上所写的数字一次为Ki(i=1,2,3.....n)时,这四次抽取的纸片上的数字之后有没有可能为m,如果可能就输出"Yes",不可能则输出"No".限制:1原创 2017-01-30 22:34:38 · 1140 阅读 · 0 评论 -
递归与非递归下二叉查找数的插入·查找和删除
至于二叉查找数的特性和上述三个操作的具体分析我就不多阐述,具体直接看代码,注释中有解释和部分分析: 非递归:#include#includeusing namespace std;struct Node{ int key; Node *right,*left,*parent;};Node *root,*Nil;//插入 void insert(int k){ Nod原创 2017-02-19 23:47:34 · 467 阅读 · 0 评论 -
初等数据结构之队列
数据结构中还有个比较常用的就是队列,相比较于之前一篇介绍的栈的“后入先出”的特点,队列的特点就是“先进先出” 类比于栈,其实很容易就能知道队列的“先进先出”特点的具体意义,不过下面我还是会用图片的形式形象介绍下~在介绍之前,首先要知道队列的几个比较重要的方法,我们利用enqueue(x)向队列队尾添加元素x,dequeue()则是弹出队首元素,同时类似于栈的top指针,我们还使用head指针指向队首元素,tail指向队尾元素的后一个位置(这样指定的原因是为了进行队空的判断)。原创 2017-01-20 14:28:47 · 461 阅读 · 0 评论 -
动态规划之多重部分和问题
分析:拿到这道题目,当然可以用递归的形式进行深度搜索遍历每种情况,但是效率会非常低。一般递归带有前后数值关系的递归是可以用动态规划转化的,效率会提高很多。 至于动态规划,最重要的就是准确定义动态数组的意义并找准前后的递推式.我们这里定义dp[i][j]为bool类型,其意义表示为用前i种数(下标为0~i-1)能否凑成和j,能的话则dp[i][j]=true,反之则dp[i][j]=false原创 2017-02-17 23:09:15 · 2030 阅读 · 0 评论 -
二叉树的重建
题目:现有两个节点序列,分别是同一个二叉树进行前序遍历和中序遍历的结果。请编写一个程序,输出该二叉树按后序遍历时的节点序列。输入: 第一行输入二叉树节点数n. 第二行输入前序遍历的节点编号序列,相邻编号用空格隔开。 第三行输入中序遍历的节点编号序列,相邻编号用空格隔开。 节点编号是从1至n的整数。注意,1不一定是根节点。输入:在一行中输出按后序原创 2017-02-16 20:39:56 · 396 阅读 · 0 评论 -
初等排序之选择排序
选择排序,顾名思义,就是不断选择剩余数列中的最大值,然后再进行排序,是一个比较简单的排序算法,所以就直接以一个实例用图像的方式介绍下:原创 2017-01-17 11:04:05 · 364 阅读 · 0 评论 -
初等排序之冒泡排序
冒泡排序又叫起泡排序,是交换排序中最简单的排序方法,基本思想就是两两相邻的记录比较,在反序(指排列顺序与最终所需要的排序顺序相反)时则交换,正序则不变化。其余的也不多说,以一个例子进行形象的介绍:原创 2017-01-15 17:49:46 · 417 阅读 · 1 评论 -
初等排序之希尔排序
对于插入排序,我们其实不难发现如果数据本来就基本有序,那么数据插入移动的次数就会非常少。要注意这里这里说的基本有序不等于局部有序,例如下面的数列可以当做基本有序:{1,2,8,4,5,6,7,3},是整体而言,而局部有序的例子如下:{6,7,8,9,1,2,3,4,5},这里只是数据的部分有序,对于整体而言,其实移动次数不会减少太多。其实这也是非常不好量化的概念,总之,大家要知道的是,简单的插入排序是有办法优化的,而优化的方法就如下原创 2017-01-16 23:21:32 · 468 阅读 · 0 评论 -
初等排序之插入排序
插入排序是将指定的数据插入到已经排序好的数列中,举一个简单的小例子: 相信大家都打过扑克牌,在整理扑克牌时,对扑克牌进行排序,就是将待排序的扑克牌一张张地与已经整理好的扑克牌进行比较,在找到合适的位置时直接将牌插入其中即可。下面以具体的数字进行演示:原创 2017-01-15 23:46:54 · 317 阅读 · 0 评论 -
Maximum Profit
在学期的考试复习忙过去后,寒假终于可以做自己更喜欢的事情—学习算法和刷题。在我们高中ACM大神的推荐下,买了一本《挑战程序设计竞赛》,有兴趣的同学可以跟着我这寒假的系列博客一起学习,慢慢向大神进阶~ 话不多说,开始今天的博客~题目: 外汇交易可以通过兑换不同国家的货币以赚取汇率差。比如1美元兑换100日元时购入1000美元,然后等汇率变动到一美元兑换108日元时再卖出,这样就可以赚取(原创 2017-01-14 12:16:40 · 597 阅读 · 0 评论 -
搜索之线性搜索和二分搜索
今天介绍下搜索的方法,其实对于今天介绍的两种搜索方式是很简单的,尤其是线性搜索,但是本着完整性的心态,还是不想把搜索这章中两种简单的方法漏掉,那就稍微简单介绍下吧。注意:本博文介绍的搜索都是不含重复元素的搜索,至于重复下的搜索,只需用到另外一个数据结构用来存放这多个重复元素的下标就行了,就不多作介绍。原创 2017-02-04 22:45:48 · 3174 阅读 · 1 评论 -
搜索之散列法建立简易字典
要知道的是,散列法搜索不像昨天介绍的两种搜索方式,线性搜索和二分搜索中元素可以排列在任意位置,而散列法搜索则是根据各元素的值来确定存储位置,然后将位置保管在散列表中,从而实现数据的高速搜索。其中散列表是一种数据结构,能对包含关键字的数据集合高效地执行动态插入,搜索,删除操作。虽然链表也能完成同样操作,但搜索和删除的复杂度都高达O(n). 散列表由能容纳m个元素的数组T,以及根据关键字决定数组下标的函数共同组成。就像上面所说的,元素的位置室友元素值决定的,这就比较像一个字典了。散列表大致可通原创 2017-02-05 11:34:08 · 674 阅读 · 0 评论 -
贪心算法之区间调度问题
分析:拿到这道题目,首先要看清楚最终的题目要求,它的要求是参与尽可能多的工作,并不是说工作总时间最长。对于这题我们其实可以使用贪心算法,就是不断选取当前最优策略我们不断选取工作,其实可以有以下几种思路进行选取,并进行聚反例来排除这种思路:1.在可选的工作中,选取开始时间最早的. 反例: 这种情况下先根据开始最早原则选取3号工作,这样剩下的1,2工作原创 2017-02-12 10:19:03 · 3425 阅读 · 1 评论 -
蚂蚁相遇问题的巧解
题目:n只蚂蚁以每秒1cm的速度在长为Lcm的竿子上爬行。当蚂蚁爬到竿子的端点时就会掉落。由于竿子太细,两只蚂蚁相遇时,他们不能交错通过,只能各自反向爬回去。对于每只蚂蚁,我们知道它距离竿子左端的距离为Xi,但不知道它当前的朝向,请计算所有蚂蚁落下竿子所需的最短时间和最长时间。原创 2017-01-29 23:41:17 · 6656 阅读 · 1 评论 -
栈匹配法求水坑面积
题目: 输入:用"/"和"\"代表地形断面图中的斜面,用"_"代表平面。在第一行之内完成输入。例如上图中通过字符串: \\///\\_/\\/\\\\/_/\\///输入。 输出:第1行输出该地区积水处横截面的总面积A(正数) 第2行从左至右按顺序输出积水处的数量k,以及各积水处的横截面积Li(i=1,2,......,k),相邻数据用空格隔开 限制:1<=字符串的长度<=2000 输入示例:原创 2017-01-29 21:09:32 · 780 阅读 · 2 评论 -
矩阵链乘法问题
题目: 拿到这道题,我们首先要知道矩阵相乘的规则和过程,具体的乘法过程如下:原创 2017-02-19 14:32:32 · 1064 阅读 · 0 评论 -
C++标准库之vector和list
在算法比赛中,想要使用数据结构来存放数据,虽然之前介绍了栈,队列,链表等,但是在比赛中的有限时间中,我们不可能自己动手通过基本的数组,链表来组合或包装来获得自己需要的数据结构,所以掌握C++标准库中已经封装好的数据结构就显然成为一种不得不做的事。其实在之前介绍队列和栈时,我的源代码中就已经使用了标准库中的stack和queue,那么今天就介绍下标准库中另外两个基本的数据结构---vertor和list原创 2017-01-28 17:39:19 · 501 阅读 · 0 评论