上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页
摘要: 文章作者:Yx.Ac 文章来源:勇幸|Thinking(http://www.ahathinking.com) 转载请注明,谢谢合作。以后新博客写的文章挑一些粘过来,就当给新博客增加点入链吧,哈哈本篇博文地址:http://www.ahathinking.com/archives/124.html... 阅读全文
posted @ 2012-09-02 10:55 山路水桥 阅读(595) 评论(0) 推荐(0) 编辑
摘要: 文章作者:yx_th000文章来源:Cherish_yimi (http://www.cnblogs.com/cherish_yimi/) 转载请注明,谢谢合作。关键词:trie trie树 数据结构 [本文新址:http://www.ahathinking.com/archives/14.htm... 阅读全文
posted @ 2012-09-02 10:54 山路水桥 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 作者:Dong|可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址:http://dongxicheng.org/structure/union-find-set/1、 概述并查集(Disjoint set或者Union-find set)是一种树型的数据结构,常用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。2、 基本操作并查集是一种非常简单的数据结构,它主要涉及两个基本操作,分别为:A. 合并两个不相交集合B. 判断两个元素是否属于同一个集合(1) 合并两个不相交集合(Union(x,y))合并操作很简单:先设置一个数组Father[x],表示x的 阅读全文
posted @ 2012-09-02 10:43 山路水桥 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 原文转自:http://www.matrix67.com/blog/archives/105这或许是众多OIer最大的误区之一。你会经常看到网上出现“这怎么做,这不是NP问题吗”、“这个只有搜了,这已经被证明是NP问题了”之类的话。你要知道,大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题,NPC问题才是。好,行了,基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题,什么是NP问题,什么是NPC问题,你如果不是很感兴趣就可以不看了。接下来你可以看到,把NP问题当成是 NPC问题是一个多大的错误。还是先用几 阅读全文
posted @ 2012-09-02 09:59 山路水桥 阅读(374) 评论(0) 推荐(0) 编辑
摘要: 字符串的算法一般大公司都会考到,我们首先要想到高效的hash。如百度查找一组字符串是否出现在某个文本中,这个不是考什么kmp,他们想听到的是hash。趋势科技考的是从某个文本中删除一组字符串,我想也是要hash吧。1 概述链表查找的时间效率为O(N),二分法为log2N,B+ Tree为log2N,... 阅读全文
posted @ 2012-09-01 09:52 山路水桥 阅读(757) 评论(0) 推荐(0) 编辑
摘要: 有一个日志文件,存放当天用户ID和上线,下线的时间(时间为从0 点开始到当前的秒数),这个日志文件有10亿条记录。请你设计一个算法,根据这个日志文件绘制当天在线人数曲线图。日志文件内容如下:UID 上线时间 下线时间112 200 5000 342 1320 20080 ………………总共有10亿条我的回答是,申请一个大数组,数组长度就是一天有多少秒,类似int a[24*60*60],初直为0,数组下标表示时间,内容表示当前同时在线人数依次读取没条数据,将每条数据上/下线时间之间的所有数组都自加一读取完所有数据并数组自加后,只要根据这个数组就可以很容易的绘制... 阅读全文
posted @ 2012-09-01 09:50 山路水桥 阅读(2335) 评论(0) 推荐(0) 编辑
摘要: #define LL(x) ((x)<<1)#define RR(x) ((x)<<1|1)#define FF(i,n) for(int i = 0 ; i < n ; i ++) 1 struct Seg_Tree{ 2 int left,right,num; 3 int calmid() { 4 return (left+right)/2; 5 } 6 }tt[150000]; 7 int num[50001]; 8 int build(int left,int right,int idx) { 9 tt[idx].left = lef... 阅读全文
posted @ 2012-08-31 20:58 山路水桥 阅读(1220) 评论(0) 推荐(0) 编辑
摘要: 以实现函数printf的一个最简单版本为例,介绍如何以可移植的方式编写可处理变长参数表的函数。因为我们的重点在于参数的处理,所以,函数minprintf只处理格式字符串和参数,格式转换则通过调用函数printf实现。 函数printf的正确声明形式为:int printf(char* fmt, ...) 其中,省略号表示参数表中参数的数量和类型是可变的。省略号只能出现在参数表的尾部。因为minprintf函数不需要想printf函数一样返回实际输出的字符数,因此,我们将它声明为下列形式:void minprintf(char* fmt, ...) 编写函数minprintf的关键在于如何处理一 阅读全文
posted @ 2012-08-31 20:23 山路水桥 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 对于二进制表示的float类型的2.5,其在内存中的表示为01000000 00100000 00000000 00000000,如果我们想打印出它在内存中是如何表示的,那么我们可以用1进行移位,与每个比特进行与运算,还是看看代码吧:对于输入参数,在visual studio下可以点击项目->属性->配置属性->调试->命令参数进行输入,在visual c++6.0可以点击工程->设置->调试->程序变量里输入。输入2.5打印看看,其结果与我们预期相同。#include <cstdlib> #include <iostream> 阅读全文
posted @ 2012-08-31 20:21 山路水桥 阅读(449) 评论(0) 推荐(0) 编辑
摘要: 在《编程珠玑》一书上,有一题是将一堆不重复的数进行排序,这些数的值大小位于[0, 10000000).然后作者在书后给出的答案确实很精辟,利用位排序将这个问题轻而易举的解决了。首先弄懂i>>SHIFT相当于i/32,i&MASK相当于i%32.题目中说了Replace above 2 lines w... 阅读全文
posted @ 2012-08-31 20:13 山路水桥 阅读(196) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 15 下一页