随笔分类 -  算法学习

学习回顾一些经典的算法
摘要:二分查找算法是最常用的一种高效算法,所以本文将常见的情形做一个总结,得到一个二分查找的模板,方便应对各种二分查找中的问题。 当前有一个 有序 的数列: 模板 该模板可以在数列中查找一个数target,如果target在数列中存在,输出target 第一次出现 位置下标,如果不存在,则输出 插入到数列 阅读全文
posted @ 2018-04-08 14:17 yinzm 阅读(186) 评论(0) 推荐(0)
摘要:最近开始刷LeetCode,准备按照专题来进行。所有的解题方案我都会放在GitHub上面,对于有价值的题目,我会重新在这里做记录,并且将解题方案贴出来,便于自己之后复习。 Array 1. easy 1. "122. Best Time to Buy and Sell Stock II" + "我的 阅读全文
posted @ 2018-04-06 13:43 yinzm 阅读(604) 评论(0) 推荐(0)
摘要:矩阵求和 难度级别:A; 编程语言:不限;运行时间限制:3000ms; 运行空间限制:256000KB; 代码长度限制:2000000B 试题描述 矩阵求和 输入 第一行n和m,表示行数和列数 接下来n行表示矩阵 再来一行一个整数q,表示询问个数 接下来q行,每行四个整数x1,y1,x2,y2表示左 阅读全文
posted @ 2018-03-20 09:48 yinzm 阅读(953) 评论(0) 推荐(0)
摘要:题目 题目描述 给N个整数,每个整数只能是1,2,或3。现在需要对这个整数序列进行从小到大排序,问最少需要进行几次交换。`N(1 include using namespace std; int N; int num[1010]; int main() { ifdef MARK freopen("s 阅读全文
posted @ 2017-11-26 15:32 yinzm 阅读(391) 评论(0) 推荐(0)
摘要:题目 题目描述 给定一个数N(1 include include using namespace std; const int maxn = 170; int N; struct Frac { int num; int deno; }; vector lst; bool cmp(Frac A, Fr 阅读全文
posted @ 2017-09-06 23:11 yinzm 阅读(262) 评论(0) 推荐(0)
摘要:题目 题目描述 有一个城堡,城堡中有若干个房间,房间与房间之间用墙来进行分隔。现在我们需要统计这个城堡有多少个房间,并且还要找出最大的房间的面积是多少(一个单元格就代表一个单元面积)。城堡的主人现在想要在这些房间中通过打通一面墙来使两个房间合并,并且要求合并之后的房间是所有可能情况中最大的房间。我们 阅读全文
posted @ 2017-09-02 16:07 yinzm 阅读(306) 评论(0) 推荐(0)
摘要:题目 题目描述 超级素数的定义如下:如果有个素数我们从右往左依次去掉一位数,每次去掉一位数剩下的数仍然是素数,那么我们称这个数是超级素数。例如 ,这是一个素数,从右往左依次去掉一位数 ,这些数字仍然是素数,所以 是一个超级素数。 输入一个数字`n (1 include using namespace 阅读全文
posted @ 2017-08-27 10:38 yinzm 阅读(208) 评论(0) 推荐(0)
摘要:题目 题目描述 题目就是给定一个区间 (`(5 include include include using namespace std; int len, alen, blen; char astr[12],bstr[12], str[12]; bool isPrime() { int x = 0; 阅读全文
posted @ 2017-08-25 23:17 yinzm 阅读(311) 评论(0) 推荐(0)
摘要:题目 题目描述 现在有一个数字三角形,第一行有一个数字,第二行有两个数字,以此类推...,现在从第一行开始累加,每次在一个节点累加完之后,下一个节点必须是它的左下方的那个节点或者是右下方那个节点,一直累加到最后一层。问最大的累加和是多少? 在输入的时候因为格式的问题,所以我们会形成一个直角三角形。那 阅读全文
posted @ 2017-08-25 14:10 yinzm 阅读(344) 评论(0) 推荐(0)
摘要:题目 题目描述 有三个牛奶桶,三个桶的容积分别是 ,最小为1,最大为20。刚开始只有第三个桶里面装满了牛奶,其余两个桶都是空的。我们现在可以将第三个桶中的牛奶往其他两个桶里面倒一些牛奶,然后还可以将其他两个桶往另一个桶中倒牛奶,但是我们在操作的时候有严格的要求: 从一个桶往另一个桶中倒牛奶,要么直到 阅读全文
posted @ 2017-08-24 17:33 yinzm 阅读(411) 评论(0) 推荐(0)
摘要:背景 这里主要是用来针对USACO上的题目的二次汇总,因为我在刷题的过程中,有的题目我是可以很快想到解决方案的,对于这种题目,就没有必要深究了。但是有一些题目对于我来说还是有一些挑战的,可能用朴素的算法可以解决,但是另外一种优美的解法是我没有想到的,也有可能是这个题目我是看完别人的题解之后才会的。所 阅读全文
posted @ 2017-08-22 14:02 yinzm 阅读(1392) 评论(0) 推荐(0)
摘要:前天做了下美团的一个codeM比赛的资格赛,遇到一个题目挺有意思的,所以现在做一下总结。 题目描述 美团的每一个用户都有一个用户代金券的消费记录日志,每位用户都能购买若干种代金券,但是每一种代金券最多只能购买一张。如果现在手上已经有了一张某种的代金券,那么只有在消费完这张代金券之后才能再次购买同种代 阅读全文
posted @ 2017-06-19 19:26 yinzm 阅读(488) 评论(0) 推荐(0)
摘要:题目 在一种"麻将"游戏中,游戏是在一个有W*H格子的矩形平板上进行的。每个格子可以放置一个麻将牌,也可以不放(如图所示)。玩家的目标是将平板上的所有可通过一条路径相连的两张相同的麻将牌,从平板上移去。最后如果能将所有牌移出平板,则算过关。 这个游戏中的一个关键问题是:两张牌之间是否可以被一条路径所 阅读全文
posted @ 2017-06-03 10:37 yinzm 阅读(1621) 评论(1) 推荐(0)
摘要:题目链接 "http://acm.timus.ru/problem.aspx?space=1&num=1005" 题目大意 给你一堆石头,现在需要你将这堆石头分成两堆,要求两堆石头的重量相差最小,求这个最小的值是多少。 解题思路 看完题目之后,我们可以了解一下数据的规模,最多就20个石头,所以我们可 阅读全文
posted @ 2017-03-27 22:29 yinzm 阅读(496) 评论(0) 推荐(0)
摘要:题目 题目描述 现在给你一个数集,里面的数字都是由 这种形式构成的`0 <! more 数据范围 `(3 include include using namespace std; const int MAXN = 125000+10; bool exist[MAXN]; int num[MAXN]; 阅读全文
posted @ 2016-10-20 21:03 yinzm 阅读(281) 评论(0) 推荐(0)
摘要:Dijstra算法 "题目链接: POJ 1062 昂贵的聘礼" 解题思路 通过题意,我们可以很明显的看出来,物品的交换流程可以构成一个有向图,而且这个图是有边权的。 构建这个图的过程如下: 因为每个物品都有相应的替代物品,所以我们可以在替代物品和该物品之间建立一条边,从替代物品指向该物品,并且边上 阅读全文
posted @ 2016-10-08 00:25 yinzm 阅读(1656) 评论(0) 推荐(0)
摘要:题目 题目描述 有N座山,每座山都有一个高度,现在由于农夫想避税,所以想把这些山的高度进行一些改变,使得最高的山与最低的山之间的高度差不超过17。每座山最多只能改变一次高度,每次改变高度都会产生一定的费用,如果改变了X高度,那么将会产生 的费用,现在需要计算最少需要支付的金额。 <! more 数据 阅读全文
posted @ 2016-10-06 23:48 yinzm 阅读(393) 评论(0) 推荐(0)
摘要:题目 题目描述 在一个二维平面上有N个点,这N个点是(N/2)个虫洞的端点,虫洞的特点就是,你以什么状态从某个端点进去,就一定会以什么状态从另一端的端点出来。现在有一头牛总是沿着与X轴正方向平行的直线前进(也就是总是向右边走),所以它有可能被某些虫洞给困住。例如有一个虫洞的两个端点是A(0,0)、B 阅读全文
posted @ 2016-10-01 13:48 yinzm 阅读(570) 评论(0) 推荐(0)
摘要:题目 题目描述 农夫John的牛从农场逃脱出去了,所以他决定用一个密码锁来把农场的门锁起来,这个密码锁有三个表盘,每个表盘都是环形的,而且上面刻有1~N,现在John设了一个开锁密码,而且这个锁的设计者也有一个开锁密码。这个锁有一个特点,那就是它的容错方式,当我们输入密码时,如果我们的密码与正确的开 阅读全文
posted @ 2016-09-12 00:08 yinzm 阅读(421) 评论(0) 推荐(0)
摘要:题目 题目描述 牛式的定义,我们首先需要看下面这个算式结构: x <! more 数据范围 集合中的数字只能是从 中挑选。 样例输入 第一行输入所给集合中元素个数,下一行写出集合中的元素 样例输出 解题思路 因为数据量不大,所以我直接用枚举的方式,产生每一个被乘数与乘数,然后判断是否它的所有位都是由 阅读全文
posted @ 2016-08-31 19:18 yinzm 阅读(285) 评论(0) 推荐(0)