自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

学无止境

https://github.com/fwdhz998。深度学习的副产品就是广度学习。

  • 博客(22)
  • 收藏
  • 关注

原创 动态规划在概率论中的应用:产生N种不同结果的概率之间的联系

动态规划的应用十分常见,今天介绍一种在概率论中求期望时所用的动态规划方法。因为在求期望时,我们需要知道N种结果中,每种结果的概率p[i]和每种结果值k[i],那么最终的期望值即为E=p[1]k[1]+p[2]k[2]+...p[N]k[N]。某种题意要求下,各个p[i]的值之间有关系,p[i]=f(p[i+1]),这种情况下,我们便可以用动态规划来解决。背景:这次招聘会一共有N个人,我

2017-04-20 15:25:36 1426

转载 在ACM比赛中如何加速cin使其效率等同于scanf

在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pascal一等吗?答案是不言而喻的。一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中很不错,

2017-04-19 14:51:22 1935

原创 MySQL笔记(一):事物与Innodb存储引擎

一 事物1 事物的隔离级别:可重复读是MySQL的默认事物隔离级别。2 MySQL InnoDB处理死锁的方法:将持有最少行级排他锁的事物进行回滚,死锁发生以后,重新执行因死锁回滚的事物即可。3 事物日志:存储引擎在修改表的数据时只需要修改其内存拷贝,再把该修改行为记录到持久在硬盘上的事物日志中,而不用每次都将修改的数据本身持久到磁盘。(类似于redis

2017-04-18 10:35:33 248

原创 最短路径算法-Dijkstra算法的实质与变体

DJ算法:求有向网G的v0顶点到其余顶点v最短路径P[v]及带权长度D[v]DJ算法思想:1 用于存储最短路径下标的数组2 用于存储到各点最短路径的权值和。3 用于标记是否已经获得v0至v的最短路径。首先说明两种情况:1 路径上有权值,这种是普遍情况,直接用节点v与节点0之间的路径值作为最短路径一维数组的初始值。2 路

2017-04-17 20:00:40 1771

原创 霍夫曼编码与priority_queue的千丝万缕

霍夫曼编码:用最短的二进制编码去对一个字符串编码算法处理中,叠加当前最小的两个权值,然后再加入到权值集中正确的位置,这个过程就是一个优先级队列的实现。算法实现:1.频率排序:hash表统计频数,从小到大已排序好的权值(字符出现的频率)k[1],k[2]......k[i]....k[n],2.头部求和再插入:比如,取k[1]+k[2]的值再插入到队列中。3.重复循环步骤2,

2017-04-13 17:00:17 499

原创 严重不安全:STL map 使用map[key]==0判断key是否存在于map中

题目描述现在我们需要查出一些作弊的问答社区中的ID,作弊有两种:1.A回答了B的问题,同时B回答了A的问题。那么A和B都是作弊。2.作弊ID用户A和作弊ID用户B同时回答了C的问题,那么C也是作弊。已知每个用户的ID是一串数字,一个问题可能有多个人回答。输入描述:每组数据第一行为总问题数N(N小于等于200000),第二行开始每行一个问题,第一个数字为提问人ID,第二个数字为回

2017-04-12 15:16:58 10167 1

原创 priority_queue的底层实现及数组建堆。

stack与queue注意事项:1 stack不允许有遍历行为,stack也不提供迭代器。SGI STL便以deque作为缺省情况下stack底部结构,称之为adapter(配接器)2 除了deque之外,list也是双向开口的数据结构3 queue与stack的情况类似,不提供迭代器,也可以以list作为底层容器,默认为deque。priority_queue的底层实现—

2017-04-10 21:15:07 4255 1

原创 数独:深搜+剪枝 == 递归+回溯

题目描述数独是一个我们都非常熟悉的经典游戏,运用计算机我们可以很快地解开数独难题,现在有一些简单的数独题目,请编写一个程序求解。输入描述:输入9行,每行为空格隔开的9个数字,为0的地方就是需要填充的。输出描述:输出九行,每行九个空格隔开的数字,为解出的答案。思路:深搜+剪枝 == 递归+回溯凡是类似于迷宫的寻找路径的问题,均可由“递归+回溯”。

2017-04-09 13:25:58 2155

原创 deque的构造与内存管理

deque与vector的差异:1 deque允许于常数时间对头端进行插入或移除操作2 deque没有容量(capacity)观念,因为它是以动态地分段连续空间(中控器)组合而成3 deque避免了“重新配置、复制、释放”的轮回,代价则是复杂的迭代器架构。迭代器++:切换至下一个元素,如果已达所在缓冲区的尾端,就却换至下一节点(即下一缓冲区)的第一个元素。

2017-04-09 11:25:12 2232

转载 单链表的快速排序

单链表的特点是:单向。设头结点位head,则最后一个节点的next指向NULL。如果只知道头结点head,请问怎么将该链表排序?               设结点结构为[cpp] view plaincopystruct Node{      int key;      Node* next;  };  

2017-04-08 15:39:55 887

原创 list容器的特殊sort()算法:非递归--归并排序

std::list::sort()   非递归--归并排序背景:list容器不能使用STL算法sort(),必须使用自己的sort()成员函数。因为STL算法sort()只接受随机存储迭代器。注:侯捷说的quick sort,我觉得有误。这里没有体现出快排分而治之的思想。比如我们的list里有如下几个需要排序的元素:21,45,1,30,52,3,58,

2017-04-08 15:25:52 799

原创 优先级调度:优先级高的任务先执行。

题目:输入5组优先级任务。如下图所示输入代表的意义是: 任务ID,优先级值(值越大,优先级越高),开始时间,持续时间。共5组。输出代表的意思: 任务ID,执行持续时间,即整个任务执行的顺序。思路:在做这类题目时,在时间轴上先画出优先级高的时间线,再画优先级低的时间线,当优先级低的时间线被优先级高的时间线挡住的时候,依次往后延续,直到占满它的时间需求。#i

2017-04-07 21:49:28 10279

原创 蘑菇阵:动态规划中每条路径的概率不同

题目描述现在有两个好友A和B,住在一片长有蘑菇的由n*m个方格组成的草地,A在(1,1),B在(n,m)。现在A想要拜访B,由于她只想去B的家,所以每次她只会走(i,j+1)或(i+1,j)这样的路线,在草地上有k个蘑菇种在格子里(多个蘑菇可能在同一方格),问:A如果每一步随机选择的话(若她在边界上,则只有一种选择),那么她不碰到蘑菇走到B的家的概率是多少?输入描述:第一行

2017-04-07 14:46:11 651

原创 vector内存管理

1 注意,所谓动态增加大小,并不是在原空间之后接续新空间(因为无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍另外配置一块较大空间,然后将原内容拷贝过来,然后才开始在原内容之后构造新元素,并释放原空间。因此,对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就失效了,特别小心。扩充空间:重新配置,移动数据,释放原空间。特别注意:迭代器失

2017-04-07 10:56:35 365

原创 Traits编程技法——STL源代码门钥

traits编程技法大量运用于STL实现品中。它利用“内嵌型别”的编程技巧与编译器的template参数推导功能,增强C++未能提供的关于型别认证方面的能力。一.获取迭代器所指向的类型型别:1 利用函数模板的参数推导机制,导出型别2 但,“模板参数推导机制”只能推出参数的类型,无法推导函数的返回值类型3 回返类型加上关键词typename,用于告诉编译器这是一个函数

2017-04-06 19:37:57 390

原创 直方图内最大矩形:用栈实现一些之前可以确定的值。

题目描述有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。测试样例:[2,7,9,4,1],5返回:14

2017-04-05 15:09:18 502

原创 SGI STL内存配置策略

SGI 空间配置与释放的设计哲学:1.向 system heap要求空间2.考虑多线程(multi-threads)状态3.考虑内存不足时的应变措施4.考虑过多“小型区块”可能造成的内存碎片(fragment)问题。考虑到小型区块可能造成的内存破碎问题,SGI设计了双层级配置器。SGI STL第一级配置器 当配置区块超过128 bytes,直

2017-04-05 11:37:57 339

转载 libevent源码分析

libevent源码深度剖析三——libevent基本使用场景和事件流程张亮1 前言学习源代码该从哪里入手?我觉得从程序的基本使用场景和代码的整体处理流程入手是个不错的方法,至少从个人的经验上讲,用此方法分析libevent是比较有效的。2 基本应用场景基本应用场景也是使用libevnet的基本流程,下面来考虑一个最简单的场景,使用livevent设置定时器,应用程序只需要

2017-04-02 18:43:01 367

转载 ptotobuf的介绍与使用

今天来介绍一下“Protocol Buffers ”(以下简称protobuf)这个玩意儿。本来俺在构思“生产者/消费者模式 ”系列的下一个帖子:关于生产者和消费者之间的数据传输格式。由于里面扯到了protobuf,想想干脆单独开一个帖子算了。  ★protobuf是啥玩意儿?  为了照顾从没听说过的同学,照例先来扫盲一把。  首先,protobuf是一个开源 项 目(官方站点

2017-04-02 17:25:20 805 1

原创 在toupper/tolower前面加::,强制指定是C版本的

题目描述请设计一个高效算法,再给定的字符串数组中,找到包含"Coder"的字符串(不区分大小写),并将其作为一个新的数组返回。结果字符串的顺序按照"Coder"出现的次数递减排列,若两个串中"Coder"出现的次数相同,则保持他们在原数组中的位置关系。给定一个字符串数组A和它的大小n,请返回结果数组。保证原数组大小小于等于300,其中每个串的长度小于等于200。同时保证一定存在

2017-04-02 17:22:14 589

原创 vector<vector<int>> res=A的可行性有待商榷。

题目描述在4x4的棋盘上摆满了黑白棋子,黑白两色的位置和数目随机其中左上角坐标为(1,1),右下角坐标为(4,4),现在依次有一些翻转操作,要对一些给定支点坐标为中心的上下左右四个棋子的颜色进行翻转,请计算出翻转后的棋盘颜色。给定两个数组A和f,分别为初始棋盘和翻转位置。其中翻转位置共有3个。请返回翻转后的棋盘。测试样例:[[0,0,1,1],[1,0,1,0],[

2017-04-02 17:18:12 1118

原创 去哪儿网实习生笔试题

去哪儿网实习生笔试题目:.第一题:1.由前序遍历和中序遍历构造二叉树。2.层次遍历二叉树并打印。#include#includeusing namespace std;struct TreeNode{ TreeNode*left; TreeNode*right; int val; TreeNode(int x):left(NULL),rig

2017-04-01 20:40:28 956

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除