• 等级
  • 301963 访问
  • 535 原创
  • 11 转发
  • 3799 排名
  • 16 评论
  • 5 获赞

hdu 4846 Big Barn【dp】

http://acm.hdu.edu.cn/showproblem.php?pid=4846求矩阵中最大的仓库正方形#include <cstdio> #include <cmath> #include <algorithm> #include <iostream> #include <cstring> #include <vector> #include <string> #include <ma

2016-09-28 16:07:25

hdu 5889 Barricade【最小割】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5889解法:求最短路图上的最小割,先在图上源点和终点分别求一遍最短路。再在最短路图上求最小割。 最小割==最大流定理代码:#include <stdio.h> #include <math.h> #include <algorithm> #include <iostream> #include <str

2016-09-18 09:49:06

内存分配函数(C语言)

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

2016-09-18 02:10:47

RDB和AOF持久化

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

2016-09-17 23:52:14

哈希表VS红黑树

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

2016-09-16 23:49:26

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

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

2016-09-13 02:01:35

虚函数实现原理(转)

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

2016-09-10 00:04:04

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

2016-09-09 22:40:50

内存分配算法

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

2016-09-09 11:14:24

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

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

2016-09-06 22:35:07

基于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

2016-08-30 22:41:04

Nagle算法

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

2016-08-03 16:26:00

简明 Vim 练级攻略

很好的教程:http://coolshell.cn/articles/5426.html

2016-05-14 00:29:30

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

2016-05-12 15:27:10

Linux 进程间通信

1 pipe管道子进程写,父进程读。 pipe(fd[2]) fd[1]写,fd[0]读#include <unistd.h> #include <stdio.h> #include <string.h>#define MAXSIZE 100int main() { int fd[2],pid,line; char message[100]; if (pipe(f

2016-05-12 14:20:33

Linux 进程控制

进程1 进程创建fork()函数创建子进程。 “调用一次,返回两次”#include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <stdlib.h>int main() { pid_t pid; if ((pid = fork())<0) { printf("error\n")

2016-05-11 18:36:10

wustoj 1593: Count Zeros【线段树】

题目:http://acm.wust.edu.cn/problem.php?id=1593&soj=0解法:线段树维护因子2 5存在的个数。并判断是不是存在0代码:#include <stdio.h> #include <iostream> #include <string> #include <cstring> #include <cmath> #include <cstdlib> #includ

2016-04-25 17:17:35

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

2016-04-23 22:49:29

循环有序数组查找值

循环数组,即有序的数组进行移位后的数组。 如:4,5,6,7,8,0,1,2,3查找值是否存在时,利用二分的思想。 步骤: while(L<R) 如果 a[mid] == key,return mid。 如果a[mid] > a[L],说明L-mid是有序的,mid+1 - R是循环的 如果key<a[mid] && key >= a[L],则key在L - mid-1之间,

2016-04-22 22:20:30

hdu 3294 Girls' research【manacher】

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3294代码:#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <fstream> #include <algorithm> #include <cmath> #include <queue

2016-04-19 16:07:35

mfcheer

他不停地跑啊跑 就为了追上那个曾经被寄予厚望的自己
关注
  • 互联网·电子商务/开发组长/高级工程师/技术专家
  • 北京 朝阳区
奖章
  • 持之以恒