自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 2020-08-16

1.判断是否为2的幂次方bool isPowerOfTwo (long long x) { /* First x in the below expression is for the case when x is 0 */ return x && (!(x&(x-1))); }

2020-08-16 22:30:20 134

原创 汇编前十三章汇总(复习用)

第二章 寄存器cpu的主要的部件是寄存器, 不同的cpu,寄存器的个数、结构是不相同的。在8086cpu中有14个寄存器,这些寄存器是:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW。IP:指令指针,指向当前相互要取出的指令字节,当BIU从内存中取出一个指令后,IP就自动加1,这里的1指的不是一个字节,而是该条指令所占的字节数。 IP指向的是指令地址的段内地址偏移量,又称为偏移地址(Offset Address)或者有效地址(A, Effective Addre

2020-05-27 10:20:00 564

原创 软件工程——软件测试

软件测试1软件测试的概念1.什么是软件测试?检测和评价软件以确定其质量的过程和方法,即评价软件或程序的属性和能力,以确定它是否满足所需结果的过程与方法。2.软件测试按照技术方法进行划分,可以分为哪几类?软件测试可以分为静态分析和动态测试。静态测试:不必运行软件,只是通过对源代码的分析,检测程序的控制和数据流,已发现执行不到的四代码、无限循环、未初始化的变量、未使用的数据、重复定义的数据...

2020-04-16 10:00:17 834

原创 汇编——一些零散的知识

1. BP寄存器它的确是一个寄存器,名字叫基址指针,是16位,它的用途有点特殊,是和堆栈指针copySP联合使用的,作为SP校准使用的,只百有在寻找堆栈里的数据和使用个别的寻址方式时候才能用到。比如说,堆栈中压入了很多数据或者地址度,你肯定想通过SP来访问这些数据或者地址,但SP是要指向栈顶的,是不能随便乱改的,这时候你就需要使用BP,把SP的值传递给BP,通过BP来寻找堆栈里数据或者地址。...

2020-04-14 15:03:36 165

原创 汇编——第十三章 int指令

第十三章 int指令13.1 int指令int 指令的格式为:int n,n为中断类型码,它的功能是引发中断过程。CPU执行int n指令,相当于引发一个n号中断过程,过程如下:(1)取中断类型码n;(2)标志寄存器入栈,IF = 0, TF = 0;(3)CS、IP入栈;(4)(IP) = (n4),(CS) = (n4+2);13.2 编写供应用程序调用的中断例程...

2020-04-13 20:06:25 343

原创 汇编——第十二章 内中断

第十二章 内中断12.1 内中断的产生CPU内部有下面的情况发生的时候,将产生生相应的终端信息。(1)除法错误,比如,执行div指令产生的除法溢出;(2)单步执行;(3)执行into指令;(4)执行int指令。在8086 CPU中,上述4种中断信息的来源,简称中断源,在8086CPU 中的中断类型码如下。分别为(1)0(2)1(3)4(4)n,int 指令的格式为int n,指令中...

2020-04-13 09:57:53 485

原创 软件工程——UML

面向对象方法面向对象方法是一种以对象、对象关系等来构建软件系统模型的系统化方法面向对象方法的主要特点:从问题域中客观存在的事物出发来构造软件系统。对象的属性和操作结合为一体,构成一个独立的实体,对外屏蔽其内部细节(封装)。对事物进行分类,把具有相同属性和操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例。通过在不同程度上运用抽象的原则,可以得到特殊的类。特殊类继承...

2020-04-09 08:57:54 1344

原创 汇编——第十一章 标志寄存器

第十一章 标志寄存器标志寄存器具有以下三个作用:(1)用来存储相关指令的某些执行结果

2020-03-31 20:18:42 669

原创 汇编——第十章 CALL和RET指令

第十章 CALL和RET指令call 和 ret 指令都是转移指令, 他们都修改IP, 或者同时修改CS 和 IP。 它们经常被共同用来实现子程序的设计。10.1 ret 和 retfret指令用栈中的数据,修改IP的内容,从而实现近转移;retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移;CPU执行ret指令时,进行下面俩步操作:(1)(IP) = ((ss)*16 +(...

2020-03-24 20:34:28 437

原创 汇编——第九章转移指令的原理

汇编——第九章转移指令的原理** 可以修改IP,或者同时修改CS 和IP 的指令统称为转移指令。**概括来讲,转移指令就是可以控制CPU执行内存种某处代码的指令。9.1 操作符 offset9.2 jmp 指令jmp为无条件转移指令,可以只修改IP也可以同时修改CS和IP。jmp指令要给出两种信息:(1)转移的目的地址(2)转移的距离(段间转移、段内短转移、段内近转移)9.3 ...

2020-03-23 19:34:52 170

原创 汇编——第八章 处理数据的俩个基本问题

第八章 处理数据的俩个基本问题这俩个认问题是:(1)处理的数据在什么地方?(2)要处理的数据有多长?reg表示以恶搞寄存器,sreg表示一个段寄存器reg的集合包括:ax、bx、cx、dx、ah、al、bh、bl、ch、cl、dh、dl、sp、bp、si、di;sreg的集合包括:da、ss、cs、es。8.1 bx、si、di和dp8.4 寻址方式8.5 指令要处理的数据有...

2020-03-16 10:35:35 301

原创 汇编——第七章 更灵活的定位内存地址的方法

第七章 更灵活的定位内存地址的方法7.1 and 和 or 指令(1)and 指令:逻辑与指令,按位与运算。(2)or指令:逻辑或指令,按位或运算。

2020-03-16 09:25:01 208

原创 汇编——第五章 [BX]和loop指令

第五章 [BX]和loop指令1.[bx] 和内存单元的描述[bx],就相当于[0],bx作为偏移地址2.loop指令这是一个循环指令,默认的计数器为cx,及cx表示循环的次数,在每一次循环的末尾cx-1,到cx为0退出循环。如代码mov cx, 3mov bx,0mov dx,0s: mov al, ds:[bx]mov ah,0add dx,axinc bxloop ...

2020-03-11 11:13:02 661

原创 汇编——第三章 寄存器(内存访问)

第三章 寄存器(内存访问)3.1 内存中字的存储CPU中,用16位寄存器来存储一个字。高8位存放高位字节,低8位存放低位字节。在内存存储中,内存单元式字节单元,那么一个字就需要用俩哥哥地址连续的内存单元来存放,这个字的低位字节存放在低地址单元中,高位字节存放在高地址单元中。这叫小端方式,还有另外一个存放的方式大端方式。这里就涉及到存储器中数据的组织方式了:大端方式‘高位字节排放在内存...

2020-03-10 09:25:21 689

原创 汇编——第二章 寄存器

cpu的主要的部件是寄存器, 不同的cpu,寄存器的个数、结构是不相同的。在8086cpu中有14个寄存器,这些寄存器是:AX、BX、CX、DX、SI、

2020-03-09 16:50:57 232

原创 DP——最大连续m字段和

对于长度为n的一列数,求出连续的m个区间的和的最大值,每个区间不能重叠,即不能出现i1 < i2 < j1 的情况。特例的一个简化问题就是连续的字段和的最大值,就是m为1的时候如题1.nowcoder3887A Profits链接:nowcoder3887A题意:求最大连续字段和题解:利用dp的思想, 定义dp[i] 表示 前 i 个数分为一组的最大值转移方程为dp[i]...

2020-03-08 16:49:37 619

原创 DP专题

1.hdu1284钱币兑换问题链接:hdu1284题意:在一个国家仅有1分,2分,3分硬币,将钱N兑换成硬币有很多种兑法。请你编程序计算出共有多少种兑法。题解:dp[j] = dp[j] + dp[j-a[i]] 表示 当前钱j 由前i 种钱兑换出来的方案数代码:#include <iostream>#include <cstdio>using namesp...

2020-03-07 16:18:49 154

原创 最大字段和

#include<stdio.h>#include#include#include<string.h>#includedefine INFI 0x3f3f3f3fusing namespace std;const int maxn = 1e6+50;int a[maxn];int maxSubArray(int* nums, int numsSize) {...

2020-03-07 09:12:29 133

原创 软件工程——结构化分析方法1

结构化设计设计的概念:一种软件开发活动,定义实现需求规约所需的软件结构设计目标:依据需求规约,在一个抽象层上建立系统软件模型,包括软件体系结构(数据和程序结构),以及详细的处理算法,产生设计规约说明书。结构化设计分为:(1)总体设计,确立系统的整体模块结构,即系统实现所需要的软件模块以及这些模块之间的调用关系(体系结构设计MSD,接口设计,数据设计);在体系结构设计中定义软件模块及其之间的...

2020-03-05 09:55:09 3133 1

原创 软件工程——结构化分析方法

结构化方法概念用来指导软件项目的开发。一种系统化的软件开发方法包括:结构化分析方法、结构化设计方法、结构化程序设计方法。结构化设计方法和结构化程序设计方法的区别,前者指的软件开发设计阶段的软件体系架构以及内部模块细节的设计,而结构化程序设计方法主要指的是软件实现阶段要遵循的编程有关细节技术。结构化分析模型模型表达工具1.数据流图(DFD图)是一种表述数据变换的图形工具,包含的元...

2020-03-03 16:14:53 6838

原创 软件工程——需求

需求的基本性质:必要的、无歧义的、可测试的、可跟踪的、可测量的需求分类:功能,性能,外部接口,设计约束,质量首先要考虑功能需求,其规约了系统和系统构件必须具有的可执行功能,然后再考虑其它的非功能性需求。...

2020-02-27 08:47:03 731

原创 计算机组成原理——第二章数据的级表示

计算机组成原理——第二章 数据的级表示本章重点讨论计算机内部数据的机器级表示方式。主要内容包括:进位记数制、二进制定点数的编码表示、无符号整数和带符号整数的表示、IEEE 754 浮点数表示标准、西文字符和汉字的编码表示、十进制数的二进制编码表示(即 BCD 码)、C 语言中各种类型数据的表示和转换、数据的宽度和存放顺序以及几种常用检/纠错码的编码表示与使用方法。2.1 数制和编码2.1.1...

2020-02-26 15:05:08 1113

原创 软件工程——软件过程

几种常见的软件生存周期模型1.瀑布模型将软件生命周期划分为软件计划、需求分析和定义、设计、实现、测试、运行和维护这6个阶段,规定了它们自上而下、相互衔接的固定次序,如同瀑布流水逐级下落。优点:1)为项目提供了按阶段划分的检查点。2)当前一阶段完成后,您只需要去关注后续阶段。3)可在迭代模型中应用瀑布模型。4)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板...

2020-02-18 15:41:14 521

原创 数据结构——树状数组

树状数组是利用二进制的一些特点来实现的,主要用来查询动态的连续和的问题,修改和查询都是O(log(n))的复杂度,需要O(n)的空间复杂度1.单点修改+区间查询void add(int p, int x){ //给位置p增加x while(p <= n) sum[p] += x, p += p & -p;}int ask(int p){ //求位置p的前缀和 ...

2020-02-17 16:17:48 223

原创 数据结构——ST表(RMQ)

ST表类似树状数组、线段树。适用于解决区间最值得查询得算法,预处理O(nlogn),查询上ST表为O(1),而线段树为O(logn)。但是ST表只能除了离线的,不能修改。ST表得构造采用DP的思想。主体为一个二维数组st[][],s[i][j] 表示 [i, i + 2^j - 1]区间的最值。转移方程为:st[i][j] = min(st[i][j-1], st[i+2^(j-1)][j...

2020-02-17 15:23:24 222

原创 数据结构——单调栈,单调队列

参考来自:https://endlesslethe.com/monotone-queue-and-stack-tutorial.html#i-2单调栈一个单调递增栈的例子:进栈元素分别为3,4,2,6,4,5,2,3第i步操作结果13进栈323出栈,4进栈432进栈4 242、4出栈,6进栈654进栈6 464出栈,...

2020-02-16 10:48:36 227

原创 计算机组成原理学习——第一章计算机系统概述(持续更新、修改)

前言:关于写此系列博客,仅仅只是为了记录一下我的计算机组成原理的学习进度以及便于复习,若有读者发现有不正确的地方请多多包涵并及时告诉我,谢谢。第一章——计算机系统概述1.1 计算机的发展历程第一台通用电子计算机ENIAC的诞生是计算机技术的进步和划代的只要标志。”存储程序”方式的基本思想是:必须将事先编好的程序和原始数据送入主存后才能执行程序,一旦程序被启动执行,计算机能在不需要操作人员的...

2020-02-12 20:51:53 2682

原创 字符串——AC自动机模板(收集)

模板来源于博客:https://bestsort.cn/2019/04/28/402/文本串中模板串的总数int tot=0;//编号int trie[N][26];//字典树int val[N];//字符串结尾标记int fail[N];//失配指针void insert(char * s){//插入模式串 int root=0;//字典树上当前匹配到的结点 for(...

2020-02-11 10:57:24 149

原创 字符串——字典树模板及习题(持续更新)

字典树字典树又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。字典树叫前缀树更容易理解。字典树的样子原理一般来说trie树支持俩个操作:1.Insert(w); 就是将字符串w插入到集合2.Search(s);就是查询字符串s在不在集合中如上如所示,插入的字符串包括 ’in’,‘inn’,‘int’,‘tea’,‘to’,‘ten’,这六个字符串。黑色表示是终结点...

2020-02-06 11:07:12 436

原创 字符串——扩展kmp算法

扩展kmp算法参考链接:扩展kmp算法**问题定义:**给定俩个字符串,文本串S,模式串T,长度分别为n和m,下标从0开始定义。定义Extend[]数组,Extend[i] 等于 S[i]…S[n-i] 与 T 的最长相同的前缀长度,现在问题是求出所有Extend[i]。举个例子,看下表:i01234567SaaaaabbbTaa...

2020-01-20 10:50:32 911

原创 字符串——字符串的最大最小表示法

字符串的最大最小表示法感谢这篇博客:字符串的最小表示法引言:一个长度为n的字符串可以将最后一位放在第一位,这样就有n种变形。如"bcaxe" 可以变成 :ebcax xebca axebc caxeb 这几种。字符串的最大最小表示法,就是求着n种变形中的最大最小字典序的字符串,返回的值是第一个最大最小的字符串的起始字符位置,时间复杂度为O(n)。思想:(最小表示法)就是定义三个下标初始 ...

2020-01-18 11:18:19 1303

原创 字符串——KMP模板及习题(持续更新)

kmp模板Next[]数组的 Next[i] 记录的是模式串的0到 i-1 子串的前缀和后缀的相同的最长长度,递推来求。当 i = 0时就为-1。如果给定的模式串是:“ABCDABD”,从左至右遍历整个模式串,其各个子串的前缀后缀分别如下表格所示://kmp算法的主要作用在于对next数组的运用//性质1:对于每一个长度len的子串,该子串的最小循环节为len-next[len]//...

2020-01-16 09:48:32 456

原创 字符串——hash在acm中的运用(持续更新)

hash在acm中的运用(持续更新)第一题链接:UVA11475题意:让你在字符串后面加字符,使它成为最短的回文串,如xyz, ans为xyzyx题解:扩k,马拉车,后缀数组都可以,但是用hash直接正反hash一下判断当前hash是否一样就行,注意hash冲突可以双hash,反正时间也够//https://vjudge.net/problem/UVA-11475#include &...

2020-01-14 16:25:15 469

原创 字符串——常用进制hash

以下都只对一个字符串hash,h[n]为该串的hash值单hashtypedef unsigned long long ULL;const ULL base = 13131;//2333333const ULL mod = 1e9+7;const int maxn = 1e5+50;ULL h[maxn], p[maxn];char a[maxn];int n;void in...

2020-01-14 11:15:41 214 1

原创 字符串——字符串hash的子串hash值

常用的进制hash满足一些性质所有可以O(1) 查询子串或者减去某些位置的子串的hash值。 scanf("%d", &n); scanf("%s", a+1); p[0] = 1, h[0] = 0; for(int i = 1; i <= n; i++){ h[i] = h[i-1]*base + a[i] - 'A'; ...

2020-01-14 10:52:11 1867 1

原创 生日悖论

生日悖论生日悖论问题:不考虑出生年份,问:一个房间中至少多少人,才能使其中两个人生日相同的概率达到50%?解: 假设一年有 n 天,屋子中有 k 人,用整数 1, 2, …, k 对这些人进行编号。假定每个人的生日均匀分布于 n 天之中,且两个人的生日相互独立。当k(k−1)≥2nln2时,k 个人两个人生日相同的概率达到 50%, 代入 n = 365, 即至少23个人同出一屋,至少有两...

2020-01-13 20:46:00 647

原创 字符串——BZOJ3098: Hash Killer II(构造)

BZOJ3098: Hash Killer II(构造)链接:https://www.lydsy.com/JudgeOnline/problem.php?id=3098题意:构造一个可以卡掉mod = 1e9+7,base随意的hash,数据n l str,使长度为n的str中的长度为l的两个以上的字串起hash冲突根据生日悖论,xjb构造#include <bits/stdc++....

2020-01-13 20:40:46 348

原创 字符串——BZOJ 3097: Hash Killer I【构造题,思维题】

BZOJ 3097: Hash Killer I【构造题,思维题】题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3097题意:让你出一组数据可以卡掉自然溢出的hash,数据包括n 和 l 以及str,长度为n字符串的l长字串存在hash冲突。(1) 当base为偶数时,若两个字符串后面的64及以上的字符串相同时,hash值相同。(...

2020-01-13 20:23:43 1139

原创 链式前向星

链式前向星#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;const int maxn = 1e5+50;struct Edge{ int next, to, w;}edge[maxn...

2019-07-16 20:04:40 92

原创 最短路之克鲁斯卡尔(待修改)

最短路之克鲁斯卡尔(待修改)思想: ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190514155440899.jpg)

2019-05-14 15:55:46 115

空空如也

空空如也

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

TA关注的人

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