自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GavinGreenson的博客

关于C/C++, Objective-C & swift, 算法

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

原创 程序员到底是什么

第一次分享心理的感受,没有太注意格式,想到什么就写什么了,比较随意。来YY已经有3个多月了,算是从菜鸟变成入门水平了吧。3个月来,身为一个C++音视频开发,我时刻问自己到底学到了什么,有没有在浪费生命。这也是我一直在探讨的事情。是的,我的确学到了很多东西,学到了Android可以采用C++原生代码开发SDK,学到了音频视频的编码格式,学到了P2P、TCP/UDP等等网络知识,学到了直播要用抖动...

2018-07-19 00:57:21 971 4

原创 2017阿里巴巴实习生C/C++研发内推一面、二面经历

面经 阿里巴巴 C++ 实习生

2017-04-01 17:37:10 9820 10

原创 用斐波那契数列理解记忆化搜索

记忆化搜索有点类似于dfs+dp。但是初学算法,对于记忆化搜索的机制以及什么时候应该使用记忆化搜索还比较迷茫。所以这篇博客以斐波那契数列的求法为例,用C++实现记忆化搜索,对斐波那契数列的递归求解进行优化。1. 斐波那契数列1.1 问题定义输入一个正整数nnn,求斐波那契数列的第nnn项f(n)f(n)f(n),其中f(0)=f(1)=1,f(n)=f(n−1)+f(n−2)(n≥2)f(0)=f(1)=1, f(n)=f(n-1)+f(n-2) (n \geq 2)f(0)=f(1)=1,f(n)=

2021-09-09 15:43:50 1829 1

原创 L3 操作系统启动

L3 操作系统启动[1] setup 模块[1.1] setup.s此部分的代码用来完成 OS 启动前的设置。start: mov ax,#INITSEG mov ds,ax mov ah,#0x03 xor bh,bh int 0x10 // 取光标位置dx mov ah,#0x88 int0x15 mov [2],ax //cs:[2] cli //不允许中断 mov ax,#0x0000 clddo_move: mov es,ax add ax,#0x1000 cmp ax,#

2020-12-16 16:20:43 348

原创 L2 开始揭开钢琴的盖子

L2 开始揭开钢琴的盖子1. 计算机打开电源时执行的第一条指令通常是IP指针(或PC指针)指向的内容,由硬件设计者决定。以 x86 计算机为例:x86 PC 刚开机时,CPU处于 实模式,寻址方式为 CS:IP开机时,CS = 0xFFFF,IP = 0x0000从 ROM BIOS 映射区 寻址,地址为 0xFFFF0检查 RAM、键盘、显示器、磁盘、……将磁盘的 0 磁道 0 扇区(即操作系统的引导扇区)的 512 字节的内容 读入内存 0x7c00 处设置 CS = 0x07c0,

2020-12-13 20:52:28 264

原创 70道面试常见算法题

字符串的循环移位三次翻转字符串的包含哈希表字符串全排列next_permutation算法字符串的所有组合dfs字符串转整数stoi(), stol(), 注意边界回文判断:判断字符串是否为回文串双指针从两头往中间扫描判断链表是否回文(1)快慢指针找中点(2)翻转后半部分(3)遍历比较两段链表判断栈是否回文出栈后再入栈,与原字符串比较是否完全相同最长回文子串manacher算法:(1)预处理(2)id记录最远回文串中心,mx记录最远回文串..

2020-05-18 19:58:41 1173

原创 概率论

对立、互斥、独立分布函数的性质:(1)F(-INF)=0,F(INF)=1(2)F(x)单调递增(3)右连续(4)P{x1 < X <= x2} = F(x2) - F(x1)概率密度的充要条件:(1)f(x) >= 0(2)∫(-INF, INF)f(t)dt = 1概率密度的性质:F`(x) = f(x)常用期望和方差(1)0-1分布:E(x)=p, D(x)=p(1-p)(2)二项分布:E(x)=np, D(x)=np(1-p)(3)泊松分..

2020-05-18 11:12:34 592

原创 离散数学

析取范式:简单合取式析取合取范式:简单析取式合取主析取范式:极小项mi成真赋值主合区范式:极大项Mj成假赋值关系的性质:自反,对称,传递闭包:自反闭包,对称闭包,传递闭包等价关系:自反,对称,传递偏序关系:自反,反对称,传递等势:存在A→B的双射函数优势:存在A→B的单射函数基数:有穷集合:cardA=|A|;自然数集合:阿列夫0;实数集合:阿列夫握手定理:无向图中,顶点度数之和 = 边数的2倍图的同构:对于图G1=<V1, E1>,图G2=..

2020-05-17 21:52:42 818

原创 计算机组成原理

计算机结构(1)输入(2)输出(3)存储器(4)运算器(5)控制器CPI:执行一条指令所需的时钟周期数MAR:地址寄存器MDR:数据寄存器机器字长:能直接处理的二进制数据长度指令字长:一个指令的二进制代码长度存储字长:一个存储单元的二进制长度存储器按作用分类:主存(内存),辅存(外存),Cache按存取方式分类:RAM(SRAM,DRAM),ROM,串行访问存储器Cache和主存的映射方式:直接映射,全相联映射,组相联映射替换算法:随机算法,FIFO,LRU..

2020-05-16 17:24:27 771

原创 机器学习

机器学习(1)任务T(2)经验E(3)性能度量P监督学习和无监督学习监督学习:给的数据集包括正确答案(1.回归问题;2.分类问题)无监督学习:数据集无正确答案(1.聚类算法;2.鸡尾酒会问题)线性回归代价函数:J(θ) = 1/2mΣ(i=1, m)(h(xi) - yi)^(2)梯度下降:重复直到收敛 {θj := θj - α×(J(θ)对θj的偏导)(同时更新,α:学习率)}特征缩放:约束至[-1, 1]左右,加快梯度下降的收敛速度均值归一:用xi - ..

2020-05-16 16:07:14 243

原创 线性代数

n阶行列式可根据任意一行(列)的代数余子式展开拉普拉斯展开式| A * | | A O || O B | = | * B | = |A| * |B|范德蒙行列式=伴随矩阵 A* :由代数余子式构成的矩阵|A| = 特征值乘积AA* = A*A = |A|E初等矩阵:单位矩阵经过一次初等变换得到的矩阵矩阵可逆的条件:(1)存在B,AB = E 或 BA=E(2)Ax = 0只有零解(3)|A|!=0或r(A)=n或A的行列向量线性无关(4)存在b,Ax=b..

2020-05-16 12:18:32 925

原创 EffectiveCPP

视C++为一个语言联邦C、面向对象、泛型和模板、STL尽量以const, enum, inline替换 #define宏定义不够安全尽可能使用 constconst * int p; // 被指向物是常量const int p; // 指针本身是常量确定对象被使用前已先被初始化初始化列表,初始化次序了解C++默默编写并调用哪些函数默认构造函数、拷贝构造函数、赋值运算符、析构函数若不想使用编译器自动生成的函数,就应该明确拒绝使用private封装不想被调..

2020-05-15 19:36:29 250

原创 微积分

间断点I类间断点:可去间断点,跳跃间断点II类间断点:无穷间断点,振荡间断点可导一定连续,连续不一定可导微分形式不变洛必达法则的条件:0/0型或∞/∞型f(x)和g(x)在去心邻域可导且g’(x)!=0lim(x→x0)f’(x)/g’(x) = A或∞拉格朗日中值公式f(b) - f(a) = f’(ξ)(b - a)凹凸函数的分界点为拐点f(x)在[a,b]连续→定积分一定存在f(x)在[a,b]有界,且间断点有限→定积分存在原函数存在与定..

2020-05-15 15:25:44 580

原创 计算机网络

OSI分层和TCPIP分层OSI分层应用层表示层会话层传输层 - 报文段或用户数据报网络层 - 数据报链路层 - 帧物理层 - 比特TCP/IP分层应用层传输层网际层网络接口层物理层方式电路交换报文交换分组交换(数据报、虚电路)物理层设备中继器集线器数据链路层(组帧,差错控制,流量控制,可靠传输,介质访问控制)滑动窗口:停止-等待协议后退N帧协议选择重传协议介质访问控制(MAC):争用信道,对应MAC地址,即物理地址(6B).

2020-05-15 14:45:05 187

原创 操作系统

并行与并发并发:同一时间间隔,分时并行:同一时刻操作系统特征:并发,共享,虚拟,异步内核功能:时钟管理,中断机制,原语,系统控制的数据结构中断、异常和系统调用中断:外中断,CPU指令以外的事件(IO结束,时间片到,人为请问)异常:内中断,CPU执行指令内部的事件系统调用:用户程序调用系统提供的子功能(设备管理,文件管理,进程控制,进程通信,内存管理)系统调用过程:用户进程 → 陷入指令 → 核心态,系统堆栈 → 内核执行特权指令 → 从系统调用返回为什么引入进程?..

2020-05-15 12:35:14 208 2

原创 J-HDU 2594 (KMP & 扩展KMP)

HDU 2594 Simpsons’ Hidden Talents为了搞定这题,先要学习扩展KMP算法。当然这题用普通KMP求next数组也可以做,两种方法的AC代码都会放在最后。扩展KMP扩展 KMP 解决的是这样的问题:给定母串 S 和子串 T,要求母串每个后缀与子串的最长公共前缀。例如,设母串 S = “marjoriz”,T = “riemann”,取母串长度为 3 的后缀 “r...

2020-04-22 21:56:11 188

原创 E-POJ 1860

#include <iostream>#include <queue>#include <cstring>using namespace::std;typedef struct Change { Change(void) {} Change(int i1, int i2, double f1, double f2) : From(i1),...

2020-04-17 21:34:48 230

原创 D-POJ 3268

#include <iostream>#include <cstring>using namespace::std;#define INF 0x3f3f3f3fconst int maxn = 1002;// 有向图的单源点最短路径,先求从该节点出发的,再求以该节点为终点的int N, M, X; // 1 <= N <= 1000, 1 <...

2020-04-17 21:34:17 182

原创 C-POJ 1797

方法一 朴素dijkstra#include <iostream>#include <cstring>#define INF 0x3f3f3f3fusing namespace::std;// 普通dijkstra,O(n^3),会超时int T;int n, m; // 1 <= n <= 1000, n个点, m条边int dist[100...

2020-04-17 21:33:44 133

原创 B-POJ 2253

#include <iostream>#include <cstring>#include <vector>#include <cmath>#define INF 0x3f3f3f3fusing namespace::std;typedef pair<int, int> pii;// 时间复杂度O(n*n*n),dijks...

2020-04-17 21:32:31 144

原创 A-POJ 2378

比较慢的dijkstra#include <iostream>#include <cstring>#include <vector>#define INF 0x7f7f7f7fusing namespace::std;// O(n*n)的dijkstra算法int N, T; // 2 <= N <= 1000, 1 <= T ...

2020-04-17 21:31:51 160

原创 N-HDU 2612

#include <iostream>#include <cstring>#include <queue>#include <algorithm>using namespace::std;typedef pair<int, int> pii;typedef pair<pii, int> piii;typedef ...

2020-04-15 13:18:42 103

原创 M-HDU 1495

#include <iostream>#include <cstring>#include <vector>#include <queue>using namespace::std;typedef pair<int, int> pii;typedef pair<pii, pii> piiii;// 读清题意,不...

2020-04-15 13:18:10 108

原创 L-HDU 1241

方法一 dfs#include <iostream>#include <cstring>#include <vector>#include <queue>using namespace::std;typedef pair<int, int> pii;const int dir[8][2] = { {-1, -1}, {-1,...

2020-04-15 13:17:30 112

原创 K-POJ 3984

#include <iostream>#include <vector>#include <cstring>#include <queue>using namespace::std;typedef pair<int, int> pii;typedef pair<pii, int> piii;const int d...

2020-04-15 13:16:17 94

原创 J-UVA 11624

#include <iostream>#include <vector>#include <cstring>#include <queue>using namespace::std;typedef pair<int, int> pii;typedef pair<pii, pii> piiii;const int ...

2020-04-14 21:42:15 109

原创 I-FZU 2150

方法一 双起点BFS,会TLE#include <iostream>#include <vector>#include <string>#include <cstring>#include <queue>using namespace::std;typedef pair<int, int> pii;typede...

2020-04-14 21:41:23 114

原创 H-POJ 3414

#include <iostream>#include <vector>#include <cstring>using namespace::std;// 每次有6种操作方式,dfs遍历所有可能的结果,并用visited辅助保存已经访问过的状态// 遍历过程中保存访问路径,当得到某个罐子的状态为C时,保存这条路径// BFS也可以获得最短路径的值,...

2020-04-14 21:39:58 214 1

原创 G-POJ 3087

#include <iostream>#include <string>#include <map>using namespace::std;// 水题,理解题意就好int N, C;string s1, s2, s12;map<string, bool> visited; // 合并后的牌堆是否出现过int solve() { ...

2020-04-14 21:39:16 116

原创 F-POJ 3126

#include <iostream>#include <queue>#include <cstring>using namespace::std;typedef pair<int, int> pii;// BFS,筛选素数int n;int start, target;bool visited[10000]; // 辅助数组in...

2020-04-14 21:38:33 253

原创 E-POJ 1426

#include <iostream>#include <cstring>#include <stack>using namespace::std;// 从0位向最高位dfs搜索,每位要么取0,要么取1// 并且保存搜索到当前节点算出的余数ans,基数base// 如果该位为1,那么ans=ans+base; 如果该位为0,那么ans=ans不变...

2020-04-14 21:37:17 114

原创 D-POJ 3279

#include <iostream>#include <cstring>#include <vector>#include <memory>using namespace::std;// 第i行翻转后,第i+1行的翻转位置就确定了// 从第0行开始字典序遍历翻转位置,那么下面每一行必须按照上一行1的位置翻转// 直到最后一行,检验最...

2020-04-14 21:36:20 201

原创 C-POJ 3278

#include <iostream>#include <vector>#include <queue>using namespace::std;typedef pair<int, int> pii;// BFS,并用dp[]辅助保存已经得到最短步数的节点int N, K;int bfs(void) { if (N >=...

2020-04-14 21:35:21 205

原创 B-POJ 2251

方法一 使用visited数组辅助#include <iostream>#include <vector>#include <queue>using namespace::std;typedef struct Pos { Pos(int i1, int i2, int i3, int i4) : x(i1), y(i2), z(i3), m(...

2020-04-14 21:34:28 243

原创 A-POJ 1321

#include <iostream>#include <vector>using namespace ::std;// 类似八皇后问题,用一个数组保存已经不能再放棋子的行,从第0列开始dfsvoid dfs(vector<string>& matrix, int j, vector<bool>& row, int k, ...

2020-04-14 21:32:39 93

原创 3 资源管理

0 前言C++ 程序最常使用的就是动态分配内存,并且同时还要管理文件描述符、互斥锁、sockets等等资源。不论哪一种资源,当程序不再使用时,必须归还给系统。而在繁冗复杂的系统中,难以做到每一步都在意料之中。因此,需要遵守某些资源管理方法,这样几乎可以消除资源管理可能出现的问题。13 以对象管理资源class Tree { ... }; // 继承体系的基类Tree* Tree...

2019-07-24 16:39:03 134

原创 2 构造,析构,赋值运算符

5. 了解 C++ 默默编写并调用了哪些函数5.1 C++ 为 class 默认生成的四个函数表面上写下了如下的代码:class Empty();但实际上,C++ 会生成这个类的默认构造函数、拷贝构造函数、析构函数、赋值运算符,如下:class Empty {public: Empty() { ... } // 默认构造函数 Empty(const Empty&a...

2019-07-20 14:06:30 221

原创 1 让自己习惯C++

01: 语言联邦 (View C++ as a federation of languages)如今的C++,抛开C++11、C++17等新特性暂且不谈,称得上是一门多重范型编程语言,它包括:面向过程(C语言)面向对象(Class)泛型(模板)元编程(用程序生成程序)函数式(非冯诺伊曼式)前三个是C++的典型特性。根据C++的语法特性,可以拆分成四门次语言,每门次语言都有自己的...

2019-07-08 15:27:08 216

原创 C++笔记

1.求数组中每个数字右边第一个比它大的数使用单调栈,每当栈顶元素小于处理元素时,记录该值,循环到栈空;否则继续入栈,直到数组末尾。2.5种IO模型Unix下的5种,前4种属于同步IO,第5种属于异步IO:1.阻塞式IO应用程序阻塞,直到数据拷贝完成2.非阻塞式IO在等待数据时,应用程序轮询,CPU开销大3.IO复用(select、poll)select阻塞...

2019-02-22 18:03:12 255

原创 Codeforces Round #511 (Div. 2) D. Little C Loves 3 II

codeforces上的一道题,AC代码贴在最后面目录1.猜想2.尝试3.得出结论1.猜想容易得出一个 n * m 的棋盘,有以下结论:(1) 如果 n * m 为偶数,棋盘最多能放 n * m 个棋子;(2) 如果 n * m 为奇数,棋盘最多能放 n * (m - 1) 个棋子。那么我们猜想当 n 和 m 足够大的时候,符合题意的棋子数是不是总能达到这个最大...

2018-09-30 16:45:01 486

空空如也

空空如也

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

TA关注的人

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