关闭

[置顶] WJMZBMR在成都赛区开幕式上的讲话

各位选手,各位教练,大家好,我是来自清华大学交叉信息学院的陈立杰,今天很荣幸站在这里代表全体参赛选手发言。对于我来说,这是我第一次正式参加ACM的比赛。不过我跟ACM之间的缘分,大概在很早的时候就已经存在了。       我还依稀记得,在我初三的时候,晚上我的一个好朋友在用手机跟妹子聊天,而我在用手机看OI和ACM的题目。自习课上我的那个朋友跟妹子一起学习,而我则翘课想去机房,有时候机房老师不让...
阅读(1423) 评论(0)

hdu 4846 Big Barn【dp】

http://acm.hdu.edu.cn/showproblem.php?pid=4846求矩阵中最大的仓库正方形#include #include #include #include #include #include #include #include <ma...
阅读(146) 评论(0)

hdu 5889 Barricade【最小割】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5889解法:求最短路图上的最小割,先在图上源点和终点分别求一遍最短路。再在最短路图上求最小割。 最小割==最大流定理代码:#include #include #include #include #include <str...
阅读(213) 评论(0)

内存分配函数(C语言)

C 标准函数库提供了许多函数来实现对堆上内存管理 malloc函数:malloc函数可以从堆上获得指定字节的内存空间(必须初始化) free函数:释放内存,防止内存泄露 calloc函数:与 malloc类似,但不需要初始化 realloc函数:重新分配内存头文件stdlib.hmallocmalloc函数可以从堆上获得指定字节的内存空间,其函数原型如下:void * malloc(int...
阅读(722) 评论(0)

RDB和AOF持久化

RDB持久化直接保存数据库的键值对。是二进制文件存储。指定的时间间隔内生成数据集的时间点快照两个命令:1 SAVE 会阻塞进程 2 BGSAVE 创建子进程处理文件,不会阻塞。父进程继续处理client请求,子进程负责将内存内容写入到临时文件。由于os的写时复制机制(copy on write)父子进程会共享相同的物理页面,当父进程处理写请求时os会为父进程要修改的页面创建副本,而不是写共享的页面...
阅读(167) 评论(0)

哈希表VS红黑树

HashHash,也可以称为“散列”,就是把任意长度的输入,通过散列算法,变换成固定长度的输出,该输出就是散列值。这是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出(也就是多对一的关系)。哈希表的构造在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找。而哈希表就是利用数组这个能够快速定位数据的结构解决...
阅读(240) 评论(0)

Linux生产者消费者模型--基于线程条件变量

生产者和消费者之间用中间类似一个队列一样的东西串起来。这个队列可以想像成一个存放产品的“仓库”,生产者只需要关心这个“仓库”,并不需要关心具体的消费者,对于生产者而言甚至都不知道有这些消费者存在。对于消费者而言他也不需要关心具体的生产者,到底有多少生产者也不是他关心的事情,他只要关心这个“仓库”中还有没有东西。这种模型是一种松耦合模型。C代码:#include #include...
阅读(255) 评论(0)

虚函数实现原理(转)

虚函数表(Virtual Table),简称为V-Table。在这个表中,主是要一个类的虚函数的地址表,这张表解决了继承、覆盖的问题,保证其容真实反应实际的函数。这样,在有虚函数的类的实例中这个表被分配在了这个实例的内存中,所以,当我们用父类的指针来操作一个子类的时候,这张虚函数表就显得由为重要了,它就像一个地图一样,指明了实际所应该调用的函数。在类的对象地址空间中存储一个该虚表的入口,占4个字节虚...
阅读(126) 评论(0)

SWAR算法:计算Hamming Weight

统计数组里面非0二进制位的数目: 比如a[] = {1,0,1,0,0,1,1,0}统计非0数目为4。Hamming Weight,即汉明重量,指的是一个位数组中非0二进制位的数量。比较常规的方法,按位统计,算法复杂度O(n)。redis里实现用到了两种算法:1.查表法 比如 0000 0001 : 1 0110 0001 : 3...
阅读(300) 评论(0)

内存分配算法

(1)首次适应算法。使用该算法进行内存分配时,从空闲分区链首开始查找,直至找到一个能满足其大小要求的空闲分区为止。然后再按照作业的大小,从该分区中划出一块内存分配给请求者,余下的空闲分区仍留在空闲分区链中。   该算法倾向于使用内存中低地址部分的空闲分区,在高地址部分的空闲分区很少被利用,从而保留了高地址部分的大空闲区。显然为以后到达的大作业分配大的内存空间创造了条件。缺点在于低址部分不断...
阅读(475) 评论(0)

跳跃表 SkipList【数据结构】原理及实现

为什么选择跳表目前经常使用的平衡数据结构有:B树,红黑树,AVL树,Splay Tree, Treep等。想象一下,给你一张草稿纸,一只笔,一个编辑器,你能立即实现一颗红黑树,或者AVL树出来吗? 很难吧,这需要时间,要考虑很多细节,要参考一堆算法与数据结构之类的树,还要参考网上的代码,相当麻烦。用跳表吧,跳表是一种随机化的数据结构,目前开源软件 Redis 和 LevelDB 都有用到它,它的效率...
阅读(809) 评论(0)

基于Socket的网络聊天室

from asyncore import dispatcher from asynchat import async_chat import socket, asyncorePORT = 5005 NAME = "ChatRoom"class EndSession(Exception):passclass CommandHandler: def unknow(self, session, c...
阅读(406) 评论(0)

FTP 服务器

#include #include #include #include #include #include #include #include #include #include ...
阅读(250) 评论(0)

Nagle算法

纳格算法是以减少数据包发送量来增进TCP/IP网络的性能。它是由约翰.纳格任职于Ford Aerospace时命名。纳格的文件描述了他所谓的“小数据包问题”-某个应用程序不断地提交小单位的数据,且某些常只占1字节大小。因为TCP数据包具有40字节的标头信息(TCP与IPv4各占20字节),这导致了41字节大小的数据包只有1字节的可用信息,造成庞大的浪费。这种状况常常发生于Telnet工作阶段-大部分...
阅读(179) 评论(0)

简明 Vim 练级攻略

很好的教程:http://coolshell.cn/articles/5426.html...
阅读(338) 评论(0)

VIM配置

ubuntu系统下打开终端,输入vim就进入vim了。配置方法是输入 vim ~/.vimrc (这样是用vim编辑配置文件,或者用 gedit ~/.vimrc 就是用gedit编辑了)配置的话,按照自己习惯加几句配置文件就可以使用了。一般配置下面几个:syntax on set nu set tabstop=4 set shiftwidth=4 colo evening set mouse=a...
阅读(379) 评论(3)

Linux 进程间通信

1 pipe管道子进程写,父进程读。 pipe(fd[2]) fd[1]写,fd[0]读#include #include #include #define MAXSIZE 100int main() { int fd[2],pid,line; char message[100]; if (pipe(f...
阅读(185) 评论(0)

Linux 进程控制

进程1 进程创建fork()函数创建子进程。 “调用一次,返回两次”#include #include #include #include int main() { pid_t pid; if ((pid = fork())<0) { printf("error\n")...
阅读(220) 评论(0)

wustoj 1593: Count Zeros【线段树】

题目:http://acm.wust.edu.cn/problem.php?id=1593&soj=0解法:线段树维护因子2 5存在的个数。并判断是不是存在0代码:#include #include #include #include #include #include #includ...
阅读(184) 评论(0)

Leetcode 151. Reverse Words in a String

题目:https://leetcode.com/problems/reverse-words-in-a-string/代码:class Solution { public: void reverseWords(string &s) { string ans; ans.clear(); for (int i = 0;i != s.siz...
阅读(161) 评论(0)

循环有序数组查找值

循环数组,即有序的数组进行移位后的数组。 如:4,5,6,7,8,0,1,2,3查找值是否存在时,利用二分的思想。 步骤: while(L a[L],说明L-mid是有序的,mid+1 - R是循环的 如果key= a[L],则key在L - mid-1之间,...
阅读(200) 评论(0)
547条 共28页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:252270次
    • 积分:7638
    • 等级:
    • 排名:第3109名
    • 原创:536篇
    • 转载:11篇
    • 译文:0篇
    • 评论:15条
    最新评论