ACM算法
逆向小李子
专注逆向分析。
展开
-
数据结构01 算法的时间复杂度和空间复杂度
1、算法的概念:算法 (Algorithm),是对特定问题求解步骤的一种描述。解决一个问题往往有不止一种方法,算法也是如此。那么解决特定问题的多个算法之间如何衡量它们的优劣呢?有如下的指标:2、衡量算法的指标:(1)时间复杂度:执行这个算法需要消耗多少时间。(2)空间复杂度:这个算法需要占用多少内存空间。 同一个问题可以用不同的算法解决,而一个算法的优劣将影响到算法乃至程序的效率。算法分析的目的...转载 2018-05-02 19:57:55 · 443 阅读 · 0 评论 -
可并堆和左偏树问题解析
堆?对于堆大家想必是很熟悉的了,比如说stl里面的priority_queue就提供了方便的堆操作.当然更不必说pbds(戏称平板电视)里面的配对堆,更是Dijkstra优化的方便好手.简单的priority_queue能实现push,pop,取出top等操作...那么遇到两个堆的信息要合并的时候,我们如何实现呢?这里就是所要引出的概念——可并堆.可并堆?可并堆可以在log以内的时间复杂度合并两个...转载 2018-05-02 20:25:16 · 315 阅读 · 0 评论 -
后缀数组
先来看一道题吧:后缀排序 - 题目这是一道模板题,就是要对一个字符串的所有后缀进行排序,并且输出排序好之后相邻的后缀的LCP长度,后缀树和后缀数组都可以,但是后缀树构造太难懂(作者太傻),只好打后缀数组了。------------------------------------------------------2016.6.10----------------------------------...转载 2018-05-03 14:35:10 · 185 阅读 · 0 评论 -
树状数组彻底入门
int lowbit(int t){return t&(-t);}void add(int x,int y){for(int i=x;i<=n;i+=lowbit(i))tree[i]+=y;}int getsum(int x){int ans=0;for(int i=x;i>0;i-=lowbit(i))ans+=tree[i];return ans;} 这篇笔记 会...转载 2018-05-03 11:30:22 · 141 阅读 · 0 评论 -
基数排序法
排序算法____基数排序基数排序是一种常见的算法,虽然在各个数据结构教材中都能看到,但在面试或笔试中却很少遇到。虽然知道基数排序的原理,但从未写过它的实现算法,最近看了后缀数组中用到了基数排序,又仔细研究了下,很有收获。基数排序不同于其他的排序算法,它不是基于比较的算法。基数排序是一种借助多关键字排序的思想对单逻辑关键字进行排序的方法。它是一种稳定的排序算法。多关键字排序中有两种方法:最高位优先法...转载 2018-05-03 13:46:26 · 374 阅读 · 0 评论