04 2013 档案

摘要:今天遇到一道海量数据处理方面的题,题目是这样的: 100w个数中找出最小的100个数。 那么题目稍微抽象出来就是这样的:在N个数中找出前n小的数。这种题有一个特点:N很大,n很小。那么,我们就可以利用最大堆在O(Nlogn)的时间复杂度内得出答案。 最大堆的数据结构模型不再赘述,可自行参照百科。 用最大堆解决上述问题的步骤是这样的: 1. 建空二叉堆,其大小为100(可以用链表方式的堆,但是本人更倾向于数组型的堆); 2. 对于原数据的前n个数,按照最大堆堆顶元素大于左右儿子的特性直接构造最大堆; 3. 对于后续元素v,如果v大于堆顶元素,则用v替换掉堆顶元素,... 阅读全文
posted @ 2013-04-16 19:45 芒果布丁 阅读(258) 评论(0) 推荐(0)
摘要:(一)前言 许久之前,斌牛就完成了对分形艺术中 L-System 的研究学习,其中的每个图形都是无比的冲击与震撼,几何之美,淋漓尽致。在此也感谢胡老师提供的分形艺术研究的点子。 附:斌牛L-System之学习总结博客:http://wybwzl.iteye.com/blog/1275520胡老师推荐BBC混沌理论视频: http://v.youku.com/v_show/id_XMTcyNjE2MzMy.html分形艺术网址推荐:http://paulbourke.net/fractals/ (二)正文 下面先给出一幅图感受IFS (Iterated Function System) 分形美. 阅读全文
posted @ 2013-04-15 01:49 芒果布丁 阅读(498) 评论(0) 推荐(0)
摘要:原题链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4969 这题请教了牛B的安神才会了。 这道题是线段树的题目,解题思路是把一颗树及其子树用线段(区间)来表示,然后对区间进行修改查询操作。我的具体做法是这样的:对整棵树进行先序遍历,也就是一趟dfs,遍历过程中记录下访问节点的时间戳,那么dfs访问前和递归回来的往返过程得到两个时间点(id[i].l, id[i].r),也就是我们所转换成的区间的端点,由于是先序遍历,那么一棵子树内所有节点是连续的,则最后根节点的区间必定包含其子树节点的区间,这样就构成了线段树... 阅读全文
posted @ 2013-04-02 23:01 芒果布丁 阅读(283) 评论(0) 推荐(0)