Loading

随笔分类 -  算法----------

上一页 1 2 3 4 5 6 7 8 9 10 ··· 18 下一页
摘要:在知乎上看到一个问题: \[ 请问 199^{200} 与 200^{199}哪个更大? \] 然后回想起高中时期做过类似的证明。 已知 \(e < a < b\) ,证: \(a^b > b^a\) 证明过程如下: \(a^b > b^a\) 等价于 \(e^{b*lna} > e^{a*lnb} 阅读全文
posted @ 2021-02-11 22:09 RioTian 阅读(1351) 评论(0) 推荐(0)
摘要:前言 数塔问题,又称数字三角形、数字金字塔问题。数塔问题是多维动态规划问题中一类常见且重要的题型,其变种众多,难度遍布从低到高,掌握该类型题目的算法思维,对于攻克许多多维动态规划的问题有很大帮助。 当然你可能已经发现过我以前发布过的博客:教你彻底学会动态规划——入门篇 中已经详细讲解了数字三角形,当 阅读全文
posted @ 2021-01-21 16:02 RioTian 阅读(792) 评论(0) 推荐(1)
摘要:树的重心是什么? 对于一棵无根树,设其中的一个节点作为根,则可以形成一棵有根树。 该树以根为分界,分为若干个子树,设其中最大子树具有的节点数为 \(x\) 。 所有节点里, \(x\) 值最小的节点就是该树的重心,也叫质心。 例如上图这棵树,以1为根时,三个子树的大小分别为3、3、2,其中最大的为3 阅读全文
posted @ 2021-01-21 11:12 RioTian 阅读(253) 评论(0) 推荐(0)
摘要:起因:在一场训练赛上。有这么一题没做出来。 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6829 题目大意:有三个人,他们分别有$X,Y,Z$块钱(\(1<=X,Y,Z<=1e6\)),钱数最多的(如果不止一个那么随机等概率的选一个)随机等可能的选另 阅读全文
posted @ 2020-12-10 20:35 RioTian 阅读(2635) 评论(0) 推荐(1)
摘要:字典树 字典树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来节约存储空间,最大限度地减少无谓的字符串比较,查询效率比哈希表高。 字典树与字典很 阅读全文
posted @ 2020-12-01 21:02 RioTian 阅读(506) 评论(1) 推荐(2)
摘要:“在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。 树链剖分是把一棵树分割成若干条链,以便于维护信息的一种方法,其中最常用的是重链剖分(Heavy Path Decomposition,重路径分解 阅读全文
posted @ 2020-11-30 21:01 RioTian 阅读(1531) 评论(2) 推荐(1)
摘要:布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。 输入格式: 输入第一行给出3个正整数:N(<= 100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知 阅读全文
posted @ 2020-11-26 20:42 RioTian 阅读(214) 评论(0) 推荐(0)
摘要:在上一篇文章当中我们分享了强连通分量分解的一个经典算法Kosaraju算法,它的核心原理是通过将图翻转,以及两次递归来实现。今天介绍的算法名叫Tarjan,同样是一个很奇怪的名字,奇怪就对了,这也是以人名命名的。和Kosaraju算法比起来,它除了名字更好记之外,另外一个优点是它只需要一次递归,虽然 阅读全文
posted @ 2020-11-24 18:08 RioTian 阅读(349) 评论(0) 推荐(1)
摘要:Kosaraju算法一看这个名字很奇怪就可以猜到它也是一个根据人名起的算法,它的发明人是S. Rao Kosaraju,这是一个在图论当中非常著名的算法,可以用来拆分有向图当中的强连通分量。 背景知识 这里有两个关键词,一个是有向图,另外一个是强连通分量。有向图是它的使用范围,我们只能使用在有向图当 阅读全文
posted @ 2020-11-23 20:04 RioTian 阅读(2622) 评论(0) 推荐(2)
摘要:做题之前,可以先到下面这个网站玩一会游戏: https://unixpapa.com/floodit/?sz=14&nc=6 游戏开发里面,比较常用的一个搜索算法是寻路算法,寻路算法里面用的最多的是A*算法以及很多优化的A*算法,对于只有4个方向的寻路算法,之前在网上见到有A*的位运算优化,性能非常 阅读全文
posted @ 2020-11-23 19:58 RioTian 阅读(370) 评论(0) 推荐(1)
摘要:博弈算法中比较经典的一个博弈问题是巴什博奕,巴什博弈是这样的: 有一堆物品,数量为n,两个人轮流取,规定每次最多取m个,最少取1个。 我们定义先取者为F(first),后取者为S(second) 网上讲的很多不是很容易理解,我来讲一个非常容易理解的思路。 **推理1:**显然,如果n=m+1,那么由 阅读全文
posted @ 2020-11-23 19:50 RioTian 阅读(506) 评论(0) 推荐(1)
摘要:Manacher 算法:解决最长回文子串的利器 阅读全文
posted @ 2020-11-11 13:22 RioTian 阅读(421) 评论(1) 推荐(1)
摘要:Farthest Nodes in a Tree Given a tree (a connected graph with no cycles), you have to find the farthest nodes in the tree. The edges of the tree are w 阅读全文
posted @ 2020-11-10 23:08 RioTian 阅读(356) 评论(0) 推荐(1)
摘要:动态规划当中有非常常见的一个分支——状态压缩动态规划,很多人对于状态压缩畏惧如虎,但其实并没有那么难,希望这文章能带你们学到这个经典的应用。 二进制表示状态 在讲解多重背包问题的时候,我们曾经讲过二进制表示法来解决多重背包。利用二进制的性质,将多个物品拆分成少数个物品,转化成了简单的零一背包来解决。 阅读全文
posted @ 2020-11-07 16:57 RioTian 阅读(680) 评论(0) 推荐(3)
摘要:设立本专栏的初衷在于,我意识到我学习过的很多算法,一段时间不使用就会被我遗忘,于是决定把学习这些算法的过程记录下来,也同时分享给其他有需要的人。 本专栏默认读者会使用基本的C++语言且掌握基本的贪心、搜索、动态规划思想(部分文章也会补充$Python$ 和 $Java$ 代码) 当前文章记录数:90 阅读全文
posted @ 2020-11-06 22:49 RioTian 阅读(3349) 评论(15) 推荐(3)

上一页 1 2 3 4 5 6 7 8 9 10 ··· 18 下一页