1. 分解问题的角度: fix 某一维度,尝试另一维度上的所有可能   a. 可能是array的(i, j)pointers, b. 可能是矩形的长与宽, c. 可能是tree的每一个subtree, d. 可能是情景题的每一对pair...2. 求所有解的, 暴力上backtracking吧3. 如果问最短/最少的, 先想BFS.DP这对好基友:忘了bfs了4. 如果环相关/重复访问, DFS + visited state雄起:忘了visited了5. 如果问连通性, 静态靠DFS/BFS,…
在四种常用的最短路算法 Dijkstra, SPFA, floyd, Bellman-Ford 中, Dijks 和 SPFA 的使用较为普遍, 对大多数人来说, 也较为熟悉. 然而, floyd 与 BF 算法在一些特定的情况下也是非常管用的, 因此有必要在这里作出一点总结. Floyd的基本思路就是枚举任意两个点i, j, 再枚举任意的第三个点k, 用d[i][k] + d[j][k] 来松弛d[i][j]的值. 时间复杂度为O(n ^ 3), 优点在于可以求出任意两点之间的距离, 在稠密图…
最近在准备ccf,各种补算法,图的算法基本差不多看了一遍.今天看的是Dijkstra算法,这个算法有点难理解,如果不深入想的话想要搞明白还是不容易的.弄了一个晚自习,先看书大致明白了原理,就根据书上的代码敲,边敲边深入思考,第一遍敲完运行失败,然后回过头在分析代码,改进还是失败.经过三次修改总算勉强跑起来了,但是结果还是不对,找了半天也找不出来.感觉整个人都不好了,弄了快三个小时结果还是有问题.时间差不多就回宿舍,在路上边走边想终于找到自己代码的问题了,回到宿舍代码修改后终于完美运行.经过一晚上…
KMP算法应用于 在一篇有n个字母的文档中 查找某个想要查找的长度为m的单词:暴力枚举:从文档的前m个字母和单词对比,然后是第2到m+1个,然后是第3到m+2个:这样算法复杂度最坏就达到了O(m*n),对于大数据肯定不行.KMP算法的精髓即设法减少不必要的枚举次数,举个例子:比如已经匹配好了单词的前k-1个字母:但第k个字母无法匹配了:那么如果前k-1个字母中存在类似回文的情况(前i个字母组成的子串和后i个字母组成的子串相同),那么指针j就变成i(相当于整体往右移动),这样来达到减少枚举次数的目…
本文出处:http://blog.csdn.net/xizhibei ============================= PCA,也就是PrincipalComponents Analysis,主成份分析,是个非常优秀的算法,依照书上的说法: 寻找最小均方意义下,最能代表原始数据的投影方法 然后自己的说法就是:主要用于特征的降维 另外,这个算法也有一个经典的应用:人脸识别.这里略微扯一下,无非是把处理好的人脸图片的每一行凑一起作为特征向量,然后用PAC算法降维搞定之. PCA的主要思想是…
本人对于Diff算法也并未做深入研究,只是大概的看过一些博文了解了些原理,但依然有了如下疑问 : 对于vdom所表示的对象中,若在该oldObj和newObj之间,发现一个元素节点所表示的子对象不见了,React就直接简单粗暴的做了remove DOM处理,这是否不太合理?个人认为,应当多考虑一些环境,比如会被移除的DOM的position是为absolute的,那么是否仅仅做visibility:hidden更好?毕竟这样处理明显能降低浏览器重绘重拍所需要的计算吧 其他应该还有问题,只是我没发…
原题链接 描述    有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆.求出总的代价最小值.   输入 有多组测试数据,输入到文件结束.每组测试数据第一行有一个整数n,表示有n堆石子.接下来的一行有n(0< n <200)个数,分别表示这n堆石子的数目,用空格隔开 输出 输出总代价的最小值,占单独的一行 样例输入 3 1 2 3 7 13 7 8 16 21 4 18…
题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法. 思路分析 根据wikipedia上的介绍:两个矩阵的乘法仅当第一个矩阵B的列数和另一个矩阵A的行数相等时才能定义.如A是m×n矩阵和B是n×p矩阵,它们的乘积AB是一个m×p矩阵,它的一个元素其中 1 ≤ i ≤ m, 1 ≤ j ≤ p. 值得一提的是,矩阵乘法满足结合律和分配率,但并不满足交换律,如下图所示的这个例子,两个矩阵交换相乘后,结果变了: 下面咱们来具体解决这个矩阵相乘的问题. 解法一.暴力解法 其实,通过前面的分析…
最近感觉对EM算法有一点遗忘,在表述的时候,还是有一点说不清,于是重新去看了这篇<CS229 Lecture notes>笔记. 于是有了这篇小札. 关于Jensen's inequality不等式: Corollary(推论): 如果函数f(x)为凸函数,那么在 f(x) 上任意两点X1,X2所作割线一定在这两点间的函数图象的上方,即:    其中t表示[x1,x2]的位置 举例子: 当t=1/2 ;  1/2*f(x1) + 1/2*f(x2) >= f( 1/2*x1 + 1/2*…
偶尔在算法课本上面看到矩阵相乘的算法,联想到自己曾经在蓝桥杯系统上曾经做过一道矩阵相乘的题目,当时用的是普通的矩阵相乘的方法,效率极低,勉强通过编译.所以决定研究一下Strassen矩阵相乘算法,由于本人比较懒,所以就从网上找了一些相关的资料供大家参考: 下面内容均转自 https://i.cnblogs.com/EditPosts.aspx?opt=1 请尊重版权,支持原创. 题目描述 请编程实现矩阵乘法,并考虑当矩阵规模较大时的优化方法. 思路分析 根据wikipedia上的介绍:两个矩阵的…
There are N network nodes, labelled 1 to N. Given times, a list of travel times as directed edges times[i] = (u, v, w), where u is the source node, v is the target node, and w is the time it takes for a signal to travel from source to target. Now, we…
paxos出身 paxos出身名门,它爹是没多久前获得图灵奖的在分布式领域大名鼎鼎的LeslieLamport. paxos为何而生 那么Lamport他老人家为什么要搞这个东东呢,不是吃饱了撑的,而是为了解决分布式系统的大难题.分布式系统一 般要求具有高可用性,高可用性一般又是通过冗余也就是多副本来解决,多副本接着又带来了一致性问题,所以分布 式系统要解决的问题可简单归结为多副本的一致性问题.怎么解决一致性问题呢?抢答:用事务.何为事务?抢答: 多个操作序列的原子性.何为原子性?抢答:还需要您…
之前在codeforces上做了一道类似KMP的题目,但由于之前没有好好掌握,现在又基本忘记,并没能解答.下面是对KMP算法的一点小总结. 首先KMP算法的核心是纸在匹配过程中,利用模式串的前后缀来加速匹配过程,这一点在自己实验时就可以发现了.其次时KMP算法的核心Next数组,next[j]=k表示对于模式串的[0...j-1]位,最长存在长度为k的相同前后缀,值得注意的是对于kmp而言是不能出现next[j]=j的情况的.而next数组的计算方法我认为本质上还是DP,但是在状态转移过程中又用…
石子合并-直线版 (点击此处查看题目) 朴素写法 最简单常见的写法就是通过枚举分割点,求出每个区间合并的最小花费,从而得到整个区间的最小花费,时间复杂度为O(n^3),核心代码如下: ; i < n; i++) { ; j + i <= n; j++) { int e = j + i; dp[j][e] = inf; <= e; k++) { dp[j][e] = min(dp[j][e], dp[j][k] + dp[k + ][e] + sum[e] - sum[j - ]); }…
目录 前言 引入 算法概述 算法流程 正确性证明 代码实现 结语 前言 Johnson 和 Floyd 一样是用来解决无负环图上的全源最短路. 在稀疏图上的表现远远超过 Floyd,时间复杂度 \(O(nm\log m)\). 算法本身一点都不复杂(前提是你已经掌握了多种最短路算法),而且正确性很容易证明. 注意:全文多处引自SF dalao 的文章. 再次注意:模板题贴在这里,请熟读题面再看代码. 引入 想想求一个有 \(\leq 3000\) 个点和 \(\leq 6000\) 条边的有负权…

MD5

(转载自:http://blog.chinaunix.net/uid-20725556-id-1885710.html) MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RSA Data Security Inc的Ronald L. Rivest开发出来,经MD2.MD3和MD4发展而来.它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格…
当 Redis 作为缓存使用时,当你添加新的数据时,有时候很方便使 Redis 自动回收老的数据.LRU 实际上是被唯一支持的数据移除方法.Redis 的 maxmemory 指令,用于限制内存使用到一个固定的容量,也包含深入探讨 Redis 使用的 LRU 算法,一个近似准确的 LRU. maxmemory 配置指令(configuration directive) maxmemory 配置指令是用来配置 Redis 为数据集使用指定的内存容量大小.可以使用 redis.conf 文件来设置配…
5.查找最小的 k 个元素(数组)题目:输入 n 个整数,输出其中最小的 k 个.例如输入 1,2,3,4,5,6,7 和 8 这 8 个数字,则最小的 4 个数字为 1,2,3 和 4. 算法里面学过查找第k小的元素的O(n)算法 试着实现了一下: 注意new 初始化二维数组的方式 int (* a)[5] = new int[8][5]; /* 5.查找最小的 k 个元素(数组) 题目:输入 n 个整数,输出其中最小的 k 个. 例如输入 1,2,3,4,5,6,7 和 8 这 8 个数字,…
一.简介 LRU 实际上是被唯一支持的数据移除方法,同时也是 memcached 默认支持的缓存算法. 二.配置内存大小 在 redis.conf 文件中使用 maxmemory 指令能够配置内存大小.例子如下: // 配置内存限制为 100M maxmemory 100mb 设置 maxmemory 为 0,表示没有内存限制.这是 64 位系统的默认行为,32 位的系统则使用 3G 大小作为隐式的内存限制. 当指定的内存容量到达时,需要选择不同的策略. 三.回收策略 当 maxmemory 限…
Given a string s, partition s such that every substring of the partition is a palindrome. Return the minimum cuts needed for a palindrome partitioning of s. For example, given s = "aab",Return 1 since the palindrome partitioning ["aa",…
MD5 编辑 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.该算法的文件号为RFC 1321(R.Rivest,MIT Laboratory for Computer Science and RSA Data Security Inc. April 1992). MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑…
The Shortest Path Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2440    Accepted Submission(s): 784 Problem Description There are N cities in the country. Each city is represent by a matrix si…
Min Edit Distance ----两字符串之间的最小距离 PPT原稿参见Stanford:http://www.stanford.edu/class/cs124/lec/med.pdf Tips:由于本人水平有限,对MED的个人理解可能有纰漏之处,请勿尽信. Edit:个人理解指编辑之意,也即对于两个字符串,对其中的一个进行各种编辑操作(插入.删除.替换)使其变为另一个字符串.要解决的问题是求出最小的编辑操作次数是多少. 基因系列比对 定义距离: X,Y是大小分别为n,m的字符串. 定…
Redis高级篇 Redis-LRU缓存 将Redis作为缓存使用时,有时添加新数据时,旧数据是很难被清空的. LRU(Least Recently Used) 近期最少使用算法是常用算法之一. 最大内存配置 最大内存配置是为数据集配置的最大可用内存.可在redis.conf文件中配置,也可以用命令CONFIG SET来配置. 例如,为了配置100m的最大内存,在redis.conf文件中配置: maxmemory 100mb 如果maxmemory设置为0,表明没有内存限制,这是64bit系统…
背景 2015年注定是一个不平凡的年头,作为一个应届毕业生,我也算是经历了工作上的大起大落.下面我先简单讲述一下自己的遭遇,然后根据自己亲身的面试经历,从一个学生的角度去谈谈自己对面试过的公司的一些看法.希望也能给后来人一些启示和帮助. 我是一名985的小硕,本科不是计算机专业的,但是大学里一直在编程,大四保研后毅然选择了软件这个坑.研一的生活很快过去了,在学校的实验室里帮老师做项目的经历让我在今年2015年初就早早拿到了支付宝的实习offer.那个时候才3月份,创业之风在中国越刮越烈,其中当然…
以下为memcached中关于使用的hash算法的一点记录 memcached中默认使用的是Bob Jenkins的jenkins_hash算法 以下4段代码均在memcached-1.4.22/hash.h 以下为hash函数的声明,hashfunc_type的定义,以及hash_init函数的声明 /** * 定义一个函数指针类型 */ typedef uint32_t (*hash_func)(const void *key, size_t length); /** * 定义函数指针为ha…
Highly divisible triangular number Problem 12 The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be: 1, 3, 6, 10, 15, 21, 28, 36,…
1,背景 吸入(Inhale)效果,最初我是在iOS上面看到的,它是在Note程序中,用户可能添加了一页记录,在做删除时,它的删除效果是:这一页内容吸入到一个垃圾框的图标里面.请看下图所示: =============================================================================== 这里,我要介绍的是如何在Android上面实现一个类似的效果.先看看我实现的效果图. 上图演示了动画的某几帧,其中从1 - 4,演示了图片从原始图形…
Android数据加密概述及多种加密方式 聊天记录及账户加密 提供高质量的数据保护 数据加密又称password学,它是一门历史悠久的技术,指通过加密算法和加密密钥将明文转变为密文.而解密则是通过解密算法和解密密钥将密文恢复为明文.数据加密眼下仍是计算机系统对信息进行保护的一种最可靠的办法.它利用password技术对信息进行加密,实现信息隐蔽,从而起到保护信息的安全的作用. 一.概述 数据加密是指通过加密算法和加密密钥将明文转变为密文.而解密则是通过解密算法和解密密钥将密文恢复为明文.它产生的…
一:快照模式 默认redis是会以快照的形式将数据持久化到磁盘的(一个二进制文件,dump.rdb,这个文件名字可以指定),在配置文件中的格式是:save N M表示在N秒之内,redis至少发生M次修改则redis抓快照到磁盘.当然我们也可以手动执行save或者bgsave(异步)做快照. 工作原理简单介绍一下:当redis需要做持久化时,redis会fork一个子进程:子进程将数据写到磁盘上一个临时RDB文件中:当子进程完成写临时文件后,将原来的RDB替换掉,这样的好处就是可以copy-on…