摘要: 详细解释:算法导论/数据结构书 1.链式基数排序 //n个数,每个数有g个关键字//排序:从最后的关键字开始到最前的关键字//分配+收集//每个关键字分配+收集需要n+n时间,而共有g个关键字,时间复杂度为O(2ng),效率很高。//如果用数组,数据集中在一个区间,则区间的长度很长,另外的区间的内存 阅读全文
posted @ 2017-05-06 21:54 congmingyige 阅读(383) 评论(0) 推荐(0) 编辑
摘要: dijkstra(最短路)和Prim(最小生成树)下的堆优化 最小堆: down(i)【向下调整】:从第k层的点i开始向下操作,第k层的点与第k+1层的点(如果有)进行值大小的判断,如果父节点的值大于子节点的值,则修改,并继续对第k+1层与第k+2层的点进行判断和修改,否则不修改,且退出。当点向下移 阅读全文
posted @ 2017-05-06 19:02 congmingyige 阅读(884) 评论(0) 推荐(0) 编辑
摘要: ccf20170304地铁修建_Solution 这里最短路为所以从点1到点n的路径中最长的道路的长度。 因为1 ≤ n ≤ 100000,1 ≤ m ≤ 200000,属于稀疏图,所以使用Spfa(循环队列)较适合,如果使用dijkstra需要堆优化。 其实这道题用并查集最好,对所有道路长度从小到 阅读全文
posted @ 2017-05-06 13:22 congmingyige 阅读(959) 评论(0) 推荐(0) 编辑
摘要: 循环队列 队列:先进先出,FIFO。 牺牲一个单元,使队列为空和只有一个元素时不要产生歧义 队首front,队尾rear,队列为a[front+1]~a[rear] 开一个大小为n的数组,a:array[0..n-1] of longint ,当rear=n-1时,需要在队尾增加一个数据,此时没有存 阅读全文
posted @ 2017-05-06 13:11 congmingyige 阅读(301) 评论(0) 推荐(0) 编辑
摘要: zoj3956_Solution H=sum(hi),C=sum(ci),Value=H*H-H*C-C*C 求Value的最大值 Solution: 动态规划: 共两维:H,C 固定一维C,在该维值C相同的情况下另一维应最大H,从而动态规划另一维H,转变为01背包问题。 优化: H*H-H*C-C 阅读全文
posted @ 2017-05-06 11:29 congmingyige 阅读(207) 评论(0) 推荐(0) 编辑
摘要: Problem:https://www.nowcoder.com/question/next?pid=2811407&qid=46573&tid=6015849 如果一个数字序列逆置之后跟原序列是一样的就称这样的数字序列为回文序列。例如: {1, 2, 1}, {15, 78, 78, 15} , 阅读全文
posted @ 2017-05-06 00:09 congmingyige 阅读(1744) 评论(0) 推荐(1) 编辑