ACM算法日常

专注于基础算法的研究工作,深入解析ACM算法题,五分钟阅读,轻松理解每一行源代码。内容涉及算法、C/C++、机器学习等。...

新手入门 | 算法书籍推荐

算法书籍       公众号设立以来,很多同学都在问如何入门、提高,以及有什么好的算法书籍可以学习。这周空闲时间我就大概在网上整理了一下,由于每个人的性格、学习习惯都不一样,不能针对个人情况来推荐,所以这里给的算法书籍仅做参考哦。                  另外需要注意的是,这里给的书...

2018-08-19 14:23:40

阅读数 17783

评论数 1

DP专题 3 | LCS最长公共子序列 - POJ 1458

Common Subsequence(公共子序列问题) Description A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Give...

2019-06-21 09:39:01

阅读数 733

评论数 0

DP专题 2 | LIS最长上升子序列 - POJ 2533

这篇来看LIS~上题。 POJ - 2533 Longest Ordered Subsequence Description A numeric sequence ofaiis ordered ifa1<a2< ... <aN. Let th...

2019-06-13 19:32:41

阅读数 2203

评论数 0

DP专题 1 | 数字三角形 - POJ 1163

从本篇开始,准备做一系列的专题讲解,主要参考《算法竞赛入门经典》、《算法竞赛进阶指南》两本书。主要是为了能够更加系统的讲解各个知识点,这两本书已经讲得很好了,建议准备ACM学习以及想深入学习算法的同学购买。 每一个专题都会持续比较久的时间,就比如拿动态规划DP来说,种类非常多,从浅入深可以说是一...

2019-06-12 15:57:40

阅读数 3135

评论数 0

流问题Flow Problem(网络最大流)- HDU 3549

        网络最大流问题属于算法 里面较难的问题,因为牵涉的概念比较多,这一篇可能需要你花比较多的时间去理解,除了看这个,最好能多参考别的书籍或者文章进行比较学习,不然可能容易产生理解的偏差。           另外本公众号并不打算讲解过于复杂的问题,网络流问题已经严重超过了最初设想的...

2018-12-26 11:48:59

阅读数 4655

评论数 0

独角兽与数列(置换群循环)- HDU 4985

群论是法国数学家伽罗瓦(Galois)的发明。伽罗瓦是一个极具传奇性的人物,年仅21岁就英年早逝于一场近乎自杀的决斗中。他用该理论,具体来说是伽罗瓦群,解决了五次方程问题。在此之前柯西(Augustin-Louis Cauchy),阿贝尔(Niels Henrik Abel)等人也对群论作出了贡献...

2018-12-01 18:02:58

阅读数 5126

评论数 1

寻找整数(容斥原理) - HDU 1796

        看这题之前先复习一下容斥原理,不然肯定看不懂,呃,如果第一次接触容斥原理的题,可能弄懂了容斥原理你还是看不懂代码,是的,等会你就知道了。                  容斥原理简介:在计数时,为了使重叠部分不被重复计算,人们研究出一种新的计数方法:先不考虑重叠的情况,把包含...

2018-11-20 15:14:54

阅读数 3717

评论数 0

算法合集 | 无限的路(递推) - HDU 2073

       递推和递归有着很多的相似之处,甚至可以看做是递归的反向。递归的目的性很强,只解需要解的问题,递推有点“步步为营”的味道,不断的利用已有的信息推导出新的东西,而递归是构造出了一个通过简化问题来解决问题的途径。 递推在组合数学中有着典型应用。           本题是递推的示例题,...

2018-11-16 18:59:31

阅读数 3062

评论数 0

朋友圈(拉姆齐定理)- HDU 6152

拉姆齐Ramsey定理是一个稍微难于理解的定理,该定理又称拉姆齐二染色定理,是要解决这样的问题:   要找这样一个最小的数 R(k,l)=n,使得 n 个人中必定有 k 个人相识或 l 个人互不相识。    比如本题中的R(3,3) = 6,有3个人认识或者3个人互不认识,最小的数是6个人...

2018-11-13 21:43:49

阅读数 6004

评论数 0

四两拨千斤,GCC编译器(同余模) - HDU 3123

对于两个数M和N,如果M%P == N%P,则可以说M和N对P同余。记作公式: M≡N(modP) 同余这一属性看起来简单,然而却是数论中极为重要的概念。与之相关的公式和定理更是纷繁芜杂,如果不是数学背景的童鞋,恐怕很难深入去钻研所有的知识。   我们这一篇作为一个简单的入门,用同余公式来...

2018-11-06 08:36:16

阅读数 4080

评论数 0

海战(线段树)- HDU 4027

        这一篇是典型的线段树算法,这个算法在日常工作中可能非常少见,因为可以被常规算法所取代,但是在问题达到一定数量级之后,常规算法是很难搞定类似问题的,可以说线段树是高级算法中非常低调的一种,也许在某些关键时刻能让你化险为夷。         线段树简单的说就是对一个序列每次从中间划分...

2018-10-24 11:30:20

阅读数 2904

评论数 0

一次看懂进制转换(阶乘是关键) - HDU 2031

        说起进制转换,最常见的莫过于十进制与二进制的转换操作,因为经常要进行位运算,位运算性能一般都会优于整数运算,对于追求性能的童鞋不可谓不争之地。         对于二进制的转换,我们通常有这样的公式,例如对于一个二进制111001,转换为十进制\(x\): $$x = 1\ti...

2018-10-14 21:29:25

阅读数 2882

评论数 0

连连看游戏消除算法

今天在收到一道的面试题,觉得比较有意思,决定记录下来,整个题目与解答过程大概如下。 连连看是一种很受大家欢迎的小游戏。下面四张图给出了最基本的消除规则: 图 A 中出现在同一直线上无障碍的圈圈可以消除;图 B 中两个圈圈可以通过一次转弯消除;图 C 和图 D 中,两个圈圈可以通过两次转弯消...

2018-10-09 15:47:52

阅读数 3235

评论数 0

勇者游戏(巴什博弈)- HDU 1846

博弈算法中比较经典的一个博弈问题是巴什博奕,巴什博弈是这样的:   有一堆物品,数量为n,两个人轮流取,规定每次最多取m个,最少取1个。   我们定义先取者为F(first),后取者为S(second)   网上讲的很多不是很容易理解,我来讲一个非常容易理解的思路。   推理1:显...

2018-09-24 10:33:59

阅读数 2467

评论数 0

涂色游戏Flood-it!(IDA*算法) - HDU 4127

做题之前,可以先到下面这个网站玩一会游戏: https://unixpapa.com/floodit/?sz=14&nc=6   游戏开发里面,比较常用的一个搜索算法是寻路算法,寻路算法里面用的最多的是A*算法以及很多优化的A*算法,对于只有4个方向的寻路算法,之前在...

2018-09-19 15:40:39

阅读数 3140

评论数 0

算法合集 | 神奇的笛卡尔树 - HDU 1506

原文地址:https://cs.v8cloud.cn/article.html?blog_id=225         笛卡尔树是一个很有意思的树形结构,因为它同时满足两个性质,从key(key就是索引位置,如下图中9的key为1,3的key为2......)来看,满足二叉搜索树的特性,从val...

2018-09-12 14:36:55

阅读数 5343

评论数 1

什么才算是真正的编程能力?

计算机科学有两类根本问题。一类是理论:算法,数据结构,复杂度,机器学习,模式识别,等等等。一类是系统:操作系统,网络系统,分布式系统,存储系统,游戏引擎,等等等等。 理论走的是深度,是在追问在给定的计算能力约束下如何把一个问题解决得更快更好。而系统走的是广度,是在追问对于一个现实的需求如何在众多...

2018-08-29 14:10:10

阅读数 914

评论数 0

浅谈ACM算法学习与有效训练

一、什么是有效地训练?  很多ACMer入门的时候,都被告知:要多做题,做500多道就变牛了。其实,这既不是充分条件、也不会是必要条件。     我觉得一般情况下,对于我们普通学校的大学生,各方面能力的差距不会太大,在这种情况下,训练和学习的方法尤为重要。   其实,500题仅仅是一个标志,而...

2018-08-25 15:36:37

阅读数 5597

评论数 3

新手如何学习算法?算法如何入门以及零基础入门算法应该学些什么?

搬运工,看到一篇关于算法学习之路的总结,希望对你有帮助。 原文链接:zh.lucida.me/blog/on-le 我的算法学习之路 MAY 4TH, 2014 | COMMENTS  关于 严格来说,本文题目应该是我的数据结构和算法学习之路,但这个写法实在太绕口——况且CS中的算法往往暗指数...

2018-08-18 20:08:42

阅读数 5134

评论数 4

程序员必须掌握哪些算法?

算法 图搜索 (广度优先、深度优先)深度优先特别重要 排序 动态规划 匹配算法和网络流算法 正则表达式和字符串匹配 数据结构 图 (树尤其重要) Map 堆 栈/队列 Tries | 字典树 额外推荐 贪婪算法 概率方法 近似算法 上面是 Arjun Nayini 的推荐...

2018-08-14 08:16:15

阅读数 548

评论数 0

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