- 博客(46)
- 收藏
- 关注
原创 AC自动机
#include <cstdio>#include <cstring>#include <cstdlib>#include <string>#include <vector>#include <utility>using std::string;using std::vector;using std::pair;using std::make_pair;#define CHAR_
2016-10-11 21:47:27
402
转载 卡特兰数
一个童鞋跟我提过一个问题:说1-12 这 12 个数,分成 2 组,然后每组按大小排序,其中一组中的数总是比另外一组中对应顺序的数要大,问有多少种情况?我还真做不出来,他告诉 me 说这是Catalan数。即使他这么说,me 貌似还是不太明白。不过这不影响,me 简单搜索一下这个数(其实me以前就有所耳闻),有好几个用处,简单罗列一下。平衡括号平衡括号:在一个合法的算术表达式中可以出现的括号都是平衡
2016-09-16 15:31:37
343
原创 蓄水池抽样-Random Pick Index
问题:如何随机从n个对象中选择一个对象,这n个对象是按序排列的,但是在此之前你是不知道n的值的。 思路:如果我们知道n的值,那么问题就可以简单的用一个大随机数rand()%n得到一个确切的随机位置,那么该位置的对象就是所求的对象,选中的概率是1/n。 但现在我们并不知道n的值,这个问题便抽象为蓄水池抽样问题,即从一个包含n个对象的列表S中随机选取k个对象,n为一个非常大或者不知道的值。通常情况
2016-09-16 15:09:29
535
原创 堆排序
在堆排序中最重要的一个操作就是heapAdjust(),不管是建堆还是维护堆,都需要时时刻刻的进行heapAdjust(),那什么是heapAdjust()呢,这个函数的主要作用是保证堆中的任意父节点都大于其子节点(这里特指大顶堆,还有小顶堆,与之相反),在每次swap()后都需要利用这个函数,来保证新的堆顶的元素也满足这样的特性。在建堆的目的也是为了使得所有节点满足:任意父节点大于其子节点的值,所
2016-07-22 19:04:54
1497
转载 typedef的用法总结
为了方便下次查找,在此做一个总结记录:typedef一般有四个用途用途一定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; // 一般用大写 PCHAR pa, pb; // 可行,同
2016-07-16 11:23:05
629
原创 基于Caffe的CNN剪枝
背景传统的CNN网络训练完之后,全连接层的权值矩阵动辄就几十万、几百万个参数值,可见CNN模型的庞大,但是仔细观察CNN的权值矩阵就会发现,里面有很多的参数的绝对值都很小,比如在-0.001到0.001之间,也就是说这些连接对CNN的训练或者测试结果作用很小,因此我们就可以尝试将这些小值参数去掉,既可以减小模型的规模又可以减少计算量,最重要的前提是要保证CNN的有效性,也即正确率。主要
2016-07-05 17:03:45
15905
136
转载 用Google的gflags优雅的解析命令行参数
写了这么多年的Linux下C/C++代码,一直使用getopt_long来解析命令行参数,同时定义一个全局的struct来保存各个命令行参数的值。虽然用得比较“繁琐”,但也安于现状。最近突然发现了Google早在多年前就开源了一个解析命令行参数的“神器”gflags。赶紧来爽一把。安装 1、去官网下载一个最新的版本(gflags-2.1.1.tar.gz)。2、现在流行cmake的构建方式,gfl
2016-06-03 09:50:43
12638
1
原创 Map的按value值排序
Map自带按Key值排序的属性,但很多种情况下我们需要对Map容器进行按Vaule值排序,由于Map没有提供相应的API,我们只有自力更生了。可以利用Pair和自定义排序函数实现,比如我们拿LeetCode上的347题为例,统计一组数中出现次数最多的K个数,代码如下://自定义的pair比较函数,此函数需要定义成全局函数,设计成按second值排序bool cmp(pair<int,int> a,
2016-05-15 15:20:15
668
原创 Count Primes [LeetCode 解题报告]
题目描述: 给定n,返回小于n的素数的个数。 解题思路: 1)地毯式搜索(TLE) 即:统一从2到根号n的所有数中素数的个数,太暴力了,没过测试! 2)上下素性判别法(貌似是这个名字,TLE) 大于3的所有素数都可以表示成6*k+1或者6*k-1的形式,从而只从满足这个条件的数中进行地毯式筛选,无奈还是TLE。。。。 3)迭代向后筛选法(名字自创的,哈哈!!重点是理解思路就行) 首先
2016-05-11 10:53:35
394
转载 C++ map排序(按照value值排序)
正常的map默认按照key值排序,而map又没有像vector一样的sort()函数,那么如果将map按照value值排序呢?有两种方法:1、将map中的key和value分别存放在一个pair类型的vector中,然后利用vector的sort函数排序,其中map_verb存放我的map值: 最重要是vector的sort函数~~(用sort函数需要引入头文件 #include <algorit
2016-04-28 09:51:48
1478
原创 Trie树 [Hihocoder]
输入 输入的第一行为一个正整数n,表示词典的大小,其后n行,每一行一个单词(不保证是英文单词,也有可能是火星文单词哦),单词由不超过10个的小写英文字母组成,可能存在相同的单词,此时应将其视作不同的单词。接下来的一行为一个正整数m,表示小Hi询问的次数,其后m行,每一行一个字符串,该字符串由不超过10个的小写英文字母组成,表示小Hi的一个询问。在20%的数据中n, m<=10,词典的字母表大小<=
2016-04-20 10:54:49
364
原创 二叉树上最长单色路径
题目:对于一棵由黑白点组成的二叉树,我们需要找到其中最长的单色简单路径,其中简单路径的定义是从树上的某点开始沿树边走不重复的点到树上的另一点结束而形成的路径,而路径的长度就是经过的点的数量(包括起点和终点)。而这里我们所说的单色路径自然就是只经过一种颜色的点的路径。你需要找到这棵树上最长的单色路径。 给定一棵二叉树的根节点(树的点数小于等于300,请做到O(n)的复杂度),请返回最长单色路径的长度
2016-04-20 10:49:06
1112
原创 C++11 之for 新解
前言 C++11这次的更新带来了令很多C++程序员期待已久的for range循环,每次看到javascript, lua里的for range,心想要是C++能有多好,心里别提多酸了。这次C++11不负众望,再也不用羡慕别家人的for range了。使用场景 ex1:遍历字符串std::string str = “hello, world”;for(auto ch : str) {
2016-04-13 15:59:43
401
原创 TCP、UDP、IP 协议分析
HTTP协议:简单对象访问协议,对应于应用层 ,HTTP协议是基于TCP连接的tcp协议: 对应于传输层ip协议: 对应于网络层 TCP/IP是传输层协议,主要解决数据如何在网络中传输;而HTTP是应用层协议,主要解决如何包装数据。Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。 h
2016-04-09 20:40:26
485
原创 int,long,long long范围
unsigned int 0~4294967295 int 2147483648~2147483647 unsigned long 0~4294967295 long 2147483648~2147483647 long long的最大值:9223372036854775807 long long的最小值:-9223372036854775808 unsigned lo
2016-04-06 10:38:27
556
转载 贪吃蛇小游戏 C++实现
#include<iostream>#include<windows.h>#include<time.h>#include<conio.h>using namespace std;// 刷新当前屏幕inline void Refresh(char q[][22], int grade, int gamespeed){ system("cls"); // 清屏 int
2016-04-05 09:47:41
4699
1
原创 Spring Outing 解题报告
题目描述 You class are planning for a spring outing. N people are voting for a destination out of K candidate places. The voting progress is below: First the class vote for the first candidate place. If
2016-03-31 10:28:53
622
原创 Numeric Keypad 解题报告
描述 The numberic keypad on your mobile phone looks like below:1 2 34 5 67 8 9 0Suppose you are holding your mobile phone with single hand. Your thumb points at digit 1. Each time you can 1) press t
2016-03-30 09:56:07
1170
转载 浅谈C++多态性
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定义
2016-03-29 14:17:13
284
转载 C++-内存管理(整理笔记)
C++内存管理详解 l 内存分配方式 在C++中,内存分成5个区,分别是堆、栈、自由存储区、全局/静态区和常量存储区. 栈:存放函数参数以及局部变量,在出作用域时,将自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但分配的内存容量有限. 堆:new分配的内存块(包括数组,类实例等),需delete手动释放.如果未释放,在整个程序结束后,OS会帮你回收掉. 自由
2016-03-28 23:59:04
301
转载 Caffe代码导读(1):Protobuf例子
Protobuf是一种可以实现内存与外存交换的协议接口。这是由谷歌开发的开源工具,目前研究Caffe源码时用到。一个软件项目 = 数据结构 + 算法 + 参数,对于数据结构和算法我们都已经有较多研究,但不同开发者对参数管理却各有千秋。有人喜欢TXT格式化的参数文件,有人喜欢BIN简单高效,也有人喜欢图形化界面的直观。不一致的参数管理带来很多问题,例如一个项目组内不同成员必须约定一套统一的参数方案,或
2016-03-28 13:39:37
309
原创 Longest Palindromic Substring [Leetcode 解题报告]
**Given a string S, find the longest palindromic substring in S. You may assume that the maximum length of S is 1000, and there exists one unique longest palindromic substring.** 题目大意就是给定一个字符串,返回该字符串
2016-03-26 19:43:33
346
转载 光流Optical Flow介绍与OpenCV实现
**光流(Optical Flow)**是什么呢?名字很专业,感觉很陌生,但本质上,我们是最熟悉不过的了。因为这种视觉现象我们每天都在经历。从本质上说,光流就是你在这个运动着的世界里感觉到的明显的视觉运动(呵呵,相对论,没有绝对的静止,也没有绝对的运动)。例如,当你坐在火车上,然后往窗外看。你可以看到树、地面、建筑等等,他们都在往后退。这个运动就是光流。而且,我们都会发现,他们的运动速度居然不一样?
2016-03-25 14:10:24
1422
转载 Bag of Features (BOF)图像检索算法
1.首先,我们用surf算法生成图像库中每幅图的特征点及描述符。 2.再用k-means算法对图像库中的特征点进行训练,生成类心。 3.生成每幅图像的BOF,具体方法为:判断图像的每个特征点与哪个类心最近,最近则放入该类心,最后将生成一列频数表,即初步的无权BOF。 4.通过tf-idf对频数表加上权重,生成最终的bof。(因为每个类心对图像的影响不同。比如超市里条形码中的第一位总是6,它对辨
2016-03-25 11:02:26
1384
原创 Permutations II [Leetcode 解题报告]
Given a collection of numbers that might contain duplicates, return all possible unique permutations. For example,[1,1,2] have the following unique permutations:[1,1,2], [1,2,1], and [2,1,1].这个题跟Perm
2016-03-22 10:20:47
389
原创 Permutations [Leetcode 解题报告]
Given a collection of distinct numbers, return all possible permutations. For example,[1,2,3] have the following permutations:[1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], and [3,2,1].关于这个题方法很多,我在这里挑了
2016-03-22 10:14:55
372
原创 Restore IP Addresses [Leetcode 解题报告]
Given a string containing only digits, restore it by returning all possible valid IP address combinations.For example: Given “25525511135”,return [“255.255.11.135”, “255.255.111.35”]. (Order does not
2016-03-21 16:32:14
262
原创 Unique Binary Search Trees II [Leetcode 解题报告]
Given n, generate all structurally unique BST’s (binary search trees) that store values 1…n.For example, Given n = 3, your program should return all 5 unique BST’s shown below. 1 3 3
2016-03-21 15:17:27
248
原创 Clone Graph [Leetcode解题报告]
Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ’s undirected graph serialization: Nodes are labeled uniquely.We use # as a separator for each node,
2016-03-21 10:47:15
293
转载 C++ map的基本操作
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1. map最基本的构造函数; map<string , int >mapstring; map<int ,string >mapint; map<sring, char>mapstring; map< char ,s
2016-03-21 09:59:34
349
原创 N-Queens [Leetcode解题报告]
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integer n, return all distinct solutions to the n-queens puzzle.Each solut
2016-03-20 20:39:15
354
原创 Word Break [Leetcode解题报告]
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words. For example, given s = “leetcode”, dict = [“leet”, “
2016-03-20 15:13:40
274
转载 Edit Distance [Leetcode解题报告]
先给一个例子,两个字符串eeba和abca相似度是多少呢,edit distance是一个很好的度量,定义从字符串a变到字符串b,所需要的最少的操作步骤(插入,删除,更改)为两个字符串之间的编辑距离。对于eeba,abca它们之间的编辑距离为3,可以按照上面的操作步骤(不是唯一的)将eeba变到abca,1.将e变为a 2.删除e 3.添加c 共3个步骤。典型的动态规划问题。EDIT[i,j]表示对
2016-03-20 11:48:36
419
原创 Subset II [Leetcode 解题报告]
Given a collection of integers that might contain duplicates, nums, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplica
2016-03-20 10:53:43
440
转载 行人检测资源汇总
一、论文CVPR2013年行人检测相关的文章[1] Robust Multi-Resolution Pedestrian Detection in Traffic Scenes Junjie Yan, Xucong Zhang, Zhen Lei, Dong Yi, Shengcai Liao, Stan Li[2] Optimized Pedestrian D
2016-03-18 20:16:59
539
转载 c++中的.hpp文件
hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该cpp文件即可,无需再 将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。1
2016-03-15 15:14:27
381
原创 微软100题(1)——二叉树与双向链表
题目要求:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解决思路: 1. 根据观察可知,双向链表顺序即为二叉树的中序遍历结果----->采用中序遍历+递归; 2. 中序遍历顺序为:左+中+右; 3. 整体思路:定义一个指针p,初始化为空指针,然后采用中序遍历,将当前访问点的左指针指向当前的p指针指向的节点,如果p指
2016-03-14 16:16:21
534
原创 C语言宏定义和宏定义函数
要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。 我们来看一个例子,比较两个数或者表达式大小,首先我们把它写成宏定义: #define MAX(
2016-03-13 19:55:59
8069
1
转载 typedef函数指针用法
1.简单的函数指针的应用形式1:返回类型(*函数名)(参数表) [cpp] view plain copychar (*pFun)(int); char glFun(int a){ return;} void main() { pFun = glFun; (*pFun
2016-03-13 16:44:39
406
转载 详解C中volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;vo
2016-03-13 11:35:08
371
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人