题意:
猴子们打架 认识的猴子不会打架 两只猴子打完以后就认识了 A认识B B认识C A也认识C 每次打架由两伙猴子进行 分别选出自己的最高战斗力 在战斗之后两只猴子战斗力减半 给出m次打架 输出打架后这一伙猴子里的最强战斗力
思路:
判断两只猴子是不是一伙的 用到并查集
快速找出一伙猴子中的最强战斗力用到堆 但打完架两伙猴子合并时堆需要nlogn复杂度 因此用左偏树代替堆...
分类:
其他好文 时间:
2014-07-18 22:37:45
阅读次数:
235
索引排序
在排序时,若是数据很复杂,对数据的移动显然是费时的。若把数据移动改为指针移动,则减少了操作复杂度。索引排序,也叫地址排序,就是这种排序思想。
索引含义
根据索引的含义不同,索引排序的算法上也主要分为两种。
一、index[i]为array[i]最终在有序序列中的位置。
二、index[i]为位置i上最终应存放元素的下标。即最终元素按array[index[0]]、array[index[1]]……有序。...
分类:
其他好文 时间:
2014-07-18 21:38:33
阅读次数:
267
转载的:今天在网上看到一个关于加密算法的安全性及破解复杂度的表格,特摘录下来以便日后参考使用,原表是英文的,这里直接翻译成中文方便查阅。另外还找了一些关于密码学相关的信息,附录在后。加密算法的安全级别(Security Level of Cryptographic Algorithms) 安全级别 ...
分类:
其他好文 时间:
2014-07-18 20:36:05
阅读次数:
512
圈复杂度(Cyclomatic Complexity)是一种代码复杂度的衡量标准。它可以用来衡量一个模块判定结构的复杂程度,数量上表现为独立现行路径条数,也可理解为覆盖所有的可能情况最少使用的测试用例数。圈复杂度大说明程序代码的判断逻辑复杂,可能质量低且难于测试和维护。程序的可能错误和高的圈复杂度有...
分类:
其他好文 时间:
2014-07-18 19:37:29
阅读次数:
177
题目意思是,从一个n*m的乘法表(不要问我乘法表是什么)中选出第k小数(相同的数字会计算多次)。
比如样例 2 3 4
乘法表为
1 2 3
2 3 4
非减序列是:1, 2, 2, 3, 3, 4。第4个数字是3,所以输出3。
一开始我想到的是搜索,从n*m开始搜索,后来发现状态实在太多而且即便是搜索,时间复杂度是O(N * M)。
正确的解法是二分。二分答案(边界是[1, n * m]),然后在乘法表中去找比他小的数。因为乘法表是一个有规律的数表,所以针对每一列直接O(1)计算即可,总共计算N次。
总的...
分类:
其他好文 时间:
2014-07-18 11:04:12
阅读次数:
257
1、模块原则:使用简洁的接口拼接简单的部件2、清晰原则:清晰胜于机巧3、组合原则:设计时考虑拼接组合4、分离原则:策略同机制分离,接口同引擎分离。5、简洁原则:设计要简洁,复杂度能低则低6、吝啬原则:除非确无他法,不要编写庞大的程序。7、透明性原则:设计要可见,以便审查和调试。8、健壮原则:健壮源于...
分类:
其他好文 时间:
2014-07-17 22:09:28
阅读次数:
254
题目来源,待字闺中,原创@陈利人 ,欢迎大家继续关注微信公众账号“待字闺中”
排序只有1,2,3三个元素的数组,不能统计1,2,3的个数。
分析:这个题目,尽管也是排序,但却不能使用快速排序的方法。只有三个元素,如果时间复杂度仍旧是O(nlogn),显然不是最好的。那就可以使用线性的排序算法,例如计数排序,可是题目中要求,不能够对1,2,3进行统计个数。那该如何处理呢?请大家看下...
分类:
其他好文 时间:
2014-07-17 19:34:43
阅读次数:
291
EK算法:是一种最短路径增值的算法,通过不断从源点广搜寻找最短路径,然后记录路径中的最小容量,再给这条路径上的边上flow增值,(增值之后当然会有一部分边是满流的,那么再次广搜的时候当然也就不能正向搜索到此边了,这条路径上的边的流量都增大了,容量不变,可增值量当然也就会减少),直到从源点广搜不到汇点为止,来实现最大流。由于每次都要广搜所以时间复杂度会达到O(m*m+n),m为边的个数,n为点的个数。...
分类:
其他好文 时间:
2014-07-17 19:20:25
阅读次数:
236
【程序员编程艺术】学习记录1:左旋转字符串之指针翻转法
题目:左旋转字符串
定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部,如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(n)
思路一、暴力移位法
//暴力移位法
void leftshiftone(char *s, ...
分类:
其他好文 时间:
2014-07-17 11:06:47
阅读次数:
216
部分和问题 代码(C)本文地址: http://blog.csdn.net/caroline_wendy题目: 给定整数a1, a2, ..., an, 判断是否可以从中选出若干数, 使它们的和恰好为k.解法很多, 最简单的解法是使用深度优先搜索, 时间复杂度O(2^n), 不是最优解法.代码:/*
* main.cpp
*
* Created on: 2014.7.13
* ...
分类:
其他好文 时间:
2014-07-17 10:30:45
阅读次数:
211