自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 资源 (1)
  • 收藏
  • 关注

原创 Ubuntu 怎样升级 python3.7

Ubuntu 升级 python3.7 指南。

2022-09-26 16:59:50 882

原创 ANSI Common Lisp Chapter 2 习题参考答案

Paul Graham《ANSI Common Lisp》Chapter 2 习题参考答案。

2022-06-18 17:47:57 197

原创 Linux 安装 sbcl emacs slime 搭建 Lisp 开发环境

Linux 下,lisp 开发环境搭建,包含 sbcl 安装,emacs 安装,和 slime 安装。

2022-06-14 02:49:50 1084 1

原创 C++ 引用是否占用内存空间?

通过反汇编代码,看看能否看出一个引用变量的地址,就知道它是否占用内存空间。测试代码:int main(){ int num = 6; int &r = num; int *p = # int x = r; int y = *p; return 0;}1、X86-64 平台通过 GDB 或 objdump 获取 main 函数的反汇编代码,该汇编代码默认是 AT&T 语法。以下通过 GDB 获得反汇编代码: 0

2022-03-07 18:19:01 2161 1

原创 Parallels Desktop 最小安装 CentOS 7

镜像文件下载下载地址:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/BT种子:http://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/CentOS-7-x86_64-DVD-2009.torrent完整性确认确认是否被篡改:$ shasum -a 256 CentOS-7-x86_64-Minimal-2009.iso 07b94e6b1a0b0260b94c83d6bb76b26b

2021-11-05 23:58:28 554

原创 深入理解计算机系统——虚拟内存笔记

9.1 物理地址和虚拟地址计算机系统的主存是由 M 个连续的字节大小的单元组成的数组。每个字节都有一个唯一的物理地址,地址范围从 0 到 M-1。计算机使用内存最自然的方式是使用物理地址,我们将这种方式称为物理寻址。CPU 向内存发送一个地址,内存将该地址开始的四个字节信息传送到 CPU 中的一个 4字节寄存器。另一种方式是使用虚拟地址,CPU 通过生成一个虚拟地址(VA)来访问主存,这个虚拟地址在被送到内存之前先转换成适当的物理地址,负责地址转换的专门硬件叫内存管理单元(MMU)。9.2 地址空间

2021-11-03 15:59:53 405

原创 归并排序分析(递归 附代码)

归并排序属于分治法思想,归并排序完全遵循分治模式。直观上其操作如下:分解:分解待排序的n个元素成各具n/2个元素的两个子序列。解决:使用归并排序递归地排序两个子序列。合并:合并两个已排序的子序列以产生已排序的数组。核心函数有两个,merge(A,p,q,r):将已经有序的序列 A[p…q]和A[q+1,r] 合并为一个有序序列。#include <iostream>#include <vector>#include <climits>using nam

2021-08-29 00:40:17 223

原创 重新认识快速排序,学会递归时间复杂度计算

快速排序使用分治法实现,即一个一个复杂的问题分解为一系列容易解决的小问题,最终得到问题的解。1、算法步骤快速排序的三步分治过程:例如对 A[p…r] 进行快速排序分解:数组 A[p…r] 被划分为两个(可能为空)子数组 A[p…q-1] 和 A[p+1…r],使得A[p…q-1] 中的每一个元素都小于 A[q],而 A[q] 也小于等于 A[q+1…r]中的每个元素。其中,计算下标 q 也是划分过程的一部分。解决:通过递归调用快速排序,对子数组A[p…q-1] 和 A[p+1…r] 进行排序。

2021-08-28 11:01:41 2841

原创 《算法导论》算法分析 5种渐近记号 Θ O o Ω ω

当输入规模足够大,使得运行时间只与增长量级有关时,需要研究算法的渐近效率。也就是,当输入规模无限增加时,在极限中,算法的运行时间如何随着输入规模的变大而增加。本文中所用插图来自《算法导论》。不同的记号从不同的方面来刻画一个算法的运行效率。将插入排序的最坏运行时间刻画为下式:f(n) = an2+bn+c,其中 a,b,c为常量,n为输入规模。下面针对插入排序最坏运行时间f(n) 来展开讨论根据与 f(n) 的大小关系,可分为 “==”, “>=” “>” “<=” “<” 共5

2021-08-27 21:50:17 2750

原创 Linux c 地址空间 堆栈 数据段 代码段 变量存储位置

Linux 环境中,虚拟地址空间即用户程序可以看到的地址空间分为以下几个段,从上到下依次是栈,堆,bss,data,text以下内容只适用于 32 位系统,64 位系统略微不同。1、栈1.1 栈的作用在 c/c++ 中函数调用很常见,那么在底层函数调用是怎么实现的呢?c/c++ 中的函数调用,在会汇编指令中通过call 指令实现,当执行到 call 指令的时候,① 将函数所需参数从右到左依次入栈,例如调用 printf("a+b=%d\n",sum);,sum 入栈,字符串"a+b=%d\n"的地

2021-08-25 18:41:24 1286

原创 c/c++ 多维数组本质

数组的概念自然不必多说,根据维度不同,数组名的类型就不同。先从最简单的一维数组讲起:1、一维数组int array[3],此时定义了含有 3 个元素数组,此时 array 的类型 int*,即指针类型。array 作为指针变量,指向数组的第一个元素 array[0] ,该表达式与 *array等价,同理数组的第二个元素array[1]与*(array+1)等价。2、二维数组​ int array[3][4],对于一维数组,曾经年少无知的我一度认为array也是 int*类型,其实不是,array其

2021-08-23 12:56:09 130

翻译 x86架构 分页内存管理 虚拟内存管理 全局描述符表

80386 将逻辑地址(程序员眼中的地址)翻译为物理地址(向内存发送的地址)的两个步骤:段翻译:将一个逻辑地址(由段寄存器和偏移寄存器组成)翻译为一个线性地址(段地址*16+偏移地址)。页翻译:将一个线性地址翻译为一个物理地址。这一步是可选的,当页表还没建立的时候,线性地址直接作为物理地址。1 段翻译为了完成段翻译,CPU 使用以下数据结构:描述符(Descriptors)描述符表(Descriptors table)选择器(Selectors)段寄存器(Segment Registe

2021-08-20 11:45:16 382

原创 Lab 1- Booting a PC

关于这套课程的介绍:https://www.cnblogs.com/fatsheep9146/p/5060292.html获取实验1代码:$ mkdir ~/6.828$ cd ~/6.828$ git clone https://pdos.csail.mit.edu/6.828/2018/jos.git lab$ cd lab1、Part : PC Bootstrap这一部分学习计算机引导程序,计算机开机之后,首先运行 BIOS(基本输入输出系统),然后从启动盘的引导扇区加载操作系统启动程

2021-08-15 19:35:20 590

原创 简单验证主线程退出,子线程强制退出吗?

一个进程可以生成多个线程,创建其他线程的进程,称为主线程。现在要探讨的问题,当主线程退出后,子进程还在运行吗?现在编写程序验证这个问题。主线程中不调用以下函数:pthread_join因为该函数会阻塞主线程,直到有子进程终止。pthread_detach准确地说,是不循环调用pthread_detach,循环调用pthread_detach,自然无法让主线程退出验证代码如下:thread.c#include <unistd.h> // sleep#include &

2021-05-27 11:39:49 430

原创 Linux 静态库和动态库原理 区别 制作和使用

1、什么是库库文件是计算机上的一类文件,提供给使用者一些开箱即用的变量、函数或类。静态库和动态库,静态库和动态库的区别体现在程序的链接阶段:静态库在程序的链接阶段被复制到了程序中;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。假设当前目录下有以下文件├── main.c├── tools.c└── tools.htools.h 包含get_sum函数的声明#ifndef tools_h#define tools_hint get_sum(int a

2021-05-25 20:01:00 192

原创 GDB基础教程——断点设置,打印变量,跳出函数,跳出循环

假设当前目录下共有以下3个文件,接下来会利用以下代码来演示GDB的调试过程。├── main.cpp├── tool.h└── tools.cpp文件内容分别为:tool.h:函数声明void greeting();int sum(int a,int b);int sum(int a, int b);tools.cpp:函数定义#include <iostream>#include "tool.h"using namespace std;void greeting

2021-05-24 14:57:21 7880 2

原创 c语言 static关键字作用

1、保持变量内容的持久这一点和全局变量类似。存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量。例如:#include <stdio.h>void f(); // 函数声明int main(){ f(); f(); f(); f(); return 0;}void f(){ // 函数定义 static in

2021-05-20 23:31:21 236

原创 c/c++ const关键字 常量指针 指针常量 常量引用区别和示例

c++ const指针和引用1、普通常量声明的同时必须初始化。变量声明之后,无法再修改改变量的值。const int var = 1024;2、指针2.1 常量指针有两种等价声明方式:const int *p;int const *p;声明的时候不必初始化,可以更改指针指向,但不能通过解引用来修改指针指向的数据例如:以下代码合法int a = 1024;int b = 10;const int *p;p = &a;p = &b;以下代码不合法int

2021-05-20 11:36:40 164

原创 Linux 僵尸进程的产生和销毁

Linux 僵尸进程的产生和销毁Linux中用fork函数创建子进程。例如:#include <stdio.h>#include <unistd.h>#include <sys/types.h>int main(){ pid_t pid; pid = fork(); if(pid==0){ printf("子进程执行区域\n"); }else{ printf("父进程执行区域\n"); }

2021-05-06 17:29:52 289

原创 c 函数指针

c 函数指针1、声明void (*funP)(args);funP 为函数指针名2、初始化funP = &funNamefunName为函数名3、用函数指针调用函数(*funP)(200)4、代码示例#include <stdio.h>void myFun(int x); //声明一个函数,参数为一个intvoid (*funP)(int); //声明一个函数指针,参数为一个intint main(int argc, char *ar

2021-05-04 11:30:54 54

原创 Linux 换行符 行结束符 文件结束符区别

Linux 换行符 行结束符 文件结束符区别文件标记Ascii含义‘’\n’10换行‘\0’0c语言中表示字符串结束符EOT4传输结束符**EOF(End of File)**是一个宏定义,其真实值根据不同平台有差异,通常为-1。表示操作系统无法从数据源获取更多数据的情况,数据源一般为文件或流。**EOT(End-of-Transmission)**传输结束字符,是一个控制字符,表示传输的结束。ascii码为04’\n’ 在文本文件中,除了最后一行,

2021-04-22 20:25:52 1843

原创 c++primer练习题10.32答案

题目:重写1.6节中的书店程序,使用一个vector保存交易记录,使用不同算法完成处理。使用 sort 和10.3.1节中的 compareIsbn 函数来排序交易记录,然后使用 find 和 accumulate 求和。#include <iostream>#include <vector>#include <iterator>#include...

2019-05-05 17:43:15 262 2

原创 CodeForcesMaximum splitting(思路)

困惑了好久,还以为用dp,其实就是一道简单的思路题,如果通过观察发现,除了1 2 3 5 7 11不能被分解外,其它任何数,如果是偶数可以被分分解为4 或 6,如果是奇数可以分解为4或6或9。通过计算发现,如果是偶数,那么最大的个数就是n/4,如果是奇数,因为多了一个9减去1即可。具体的数学原理,我也不太清楚,持续探索中。实现如下(题目附后)#include <stdio.h>...

2019-05-05 17:38:45 93

原创 hdu5253连接的管道(最小生成树)

老 Jack 有一片农田,以往几年都是靠天吃饭的。但是今年老天格外的不开眼,大旱。所以老 Jack 决定用管道将他的所有相邻的农田全部都串联起来,这样他就可以从远处引水过来进行灌溉了。当老 Jack 买完所有铺设在每块农田内部的管道的时候,老 Jack 遇到了新的难题,因为每一块农田的地势高度都不同,所以要想将两块农田的管道链接,老 Jack 就需要额外再购进跟这两块农田高度差相等长度的管道。 ...

2019-01-26 11:15:35 180

原创 hdu4561连续最大积

小明和他的好朋友小西在玩一个游戏,由电脑随机生成一个由-2,0,2三个数组成的数组,并且约定,谁先算出这个数组中某一段连续元素的积的最大值,就算谁赢! 比如我们有如下随机数组: 2 2 0 -2 0 2 2 -2 -2 0 在这个数组的众多连续子序列中,2 2 -2 -2这个连续子序列的积为最大。 现在小明请你帮忙算出这个最大值。 Input第一行输入一个正整数T,表示总共有T...

2019-01-25 21:14:12 176

原创 CodeForcesMaximum splitting(思路)

困惑了好久,还以为用dp,其实就是一道简单的思路题,如果通过观察发现,除了1 2 3 5 7 11不能被分解外,其它任何数,如果是偶数可以被分分解为4 或 6,如果是奇数可以分解为4或6或9。通过计算发现,如果是偶数,那么最大的个数就是n/4,如果是奇数,因为多了一个9减去1即可。具体的数学原理,我也不太清楚,持续探索中。打开方式不对,是很难找到出口的。实现如下(题目附后)#inc...

2019-01-25 10:09:21 127

原创 hdu1172猜数字(暴力枚举)

主要难点在于判断是否满足所给条件,枚举1000到9999的所有数,看满足所有条件的数的个数,如果大于1则不确定,如果等于1,则就是这个数。实现如下(题目附后)#include &lt;stdio.h&gt;#include &lt;string.h&gt;#include &lt;algorithm&gt;#define min(a,b) a&lt;b?a:b#define M...

2019-01-24 12:45:00 332 1

原创 hdu1286找新朋友

欧拉函数:求小于n的正整数中与n互质的数的个数。 通式:,其中pi指小于x的所有质因数。 例如 10 的所有质因数为 2 5 φ(10)=10*[ (1-1/2)*(1-1/5) ]=4本题就是求欧拉函数值。实现:(题目附后)#include &lt;stdio.h&gt;#include &lt;string.h&gt;#define M 32768u...

2019-01-24 09:40:53 101

原创 Kvass and the Fair Nut(思路+数学)

The Fair Nut likes kvass very much. On his birthday parents presented him nn kegs of kvass. There are vivi liters of kvass in the ii-th keg. Each keg has a lever. You can pour your glass by exactly 11...

2019-01-22 16:41:37 465

原创 CF Equality (水题)

You are given a string ss of length nn, which consists only of the first kk letters of the Latin alphabet. All letters in string ss are uppercase.A subsequence of string ss is a string that can be d...

2019-01-22 11:12:15 319 1

原创 Wireless Network 题解(并查集应用)

 Time limit Memory limit OS 10000 ms 65536 kB Linux A - Wireless NetworkAn earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have set up a wirele...

2019-01-21 15:12:08 481

原创 How Many Answers Are Wrong解题报告(带权并查集)

题目TT and FF are ... friends. Uh... very very good friends -________-b FF is a bad boy, he is always wooing TT to play the following game with him. This is a very humdrum game. To begin with, TT sho...

2019-01-19 11:44:59 365 1

原创 FatMouse's Speed(最长上升子序列+路径记录)

Time limit   1000 ms Memory limit   32768 kB Special judge   Yes  OS   Windows 题目:FatMouse believes that the fatter a mouse is, the faster it runs. To disprove this, you want t...

2019-01-17 16:01:22 351

原创 最长公共子序列(LCS)

一个序列,如果是两个或多个已知序列的子序列,且是所有子序列中最长的,则为最长公共子序列。参考博客:动态规划 最长公共子序列 过程图解例题:F - Common Subsequence#include &lt;stdio.h&gt;#include &lt;string&gt;#include &lt;string.h&gt;#define M 1000#def...

2019-01-15 18:18:32 94

原创 I NEED A OFFER(01最小背包)

题目链接:K - I NEED A OFFER! 本题求可能得到至少一份offer的最大概率,可以求它的的反面事件,一份offer都得不到的最少概率,可以用01最小背包来球。状态转移方程dp[j]=Min(dp[j],dp[j-a[i]]*(1-b[i]));#include &lt;stdio.h&gt;#include &lt;string.h&gt;#include &lt...

2019-01-14 16:21:11 283

原创 最长上升子序列(LIS)

1) 给出一串数字,求递增的最长子序列长度。时间复杂度为n^2#include &lt;stdio.h&gt;#define MAX 100000#define max(a,b) a&gt;b?a:bint main() { int n,ans=0,num[MAX],dp[MAX]; scanf("%d",&amp;n); for(int i=0;i&lt;...

2019-01-12 17:33:48 124

原创 AFei Loves Magic题解(递归记忆化)

有时候递归有很多重复计算,造成时间复杂度很大,可以采用记忆化的方法来减小时间复杂度。例题:牛客AFei Loves Magic#include&lt;stdio.h&gt;const long long mod = 1e9+7;long long num[1000000]; //利用数组记录计算过的值long long func(int x){    if (x==1...

2019-01-06 16:35:17 227

原创 CF Petr and a Combination Lock的两种解法

1:二进制枚举子集参考:二进制枚举子集--最通俗易懂的讲解#include &lt;iostream&gt;#include &lt;stdio.h&gt;int main() { int n,ans,num[20]; scanf("%d",&amp;n); for(int i=0;i&lt;n;i++) scanf("%d",&amp;num[i])...

2019-01-05 17:39:10 273 2

原创 DFS入门问题数的全排列全面解析

问题:P1706 全排列问题刚开始学DFS的时候,我也感觉很迷惑,不知道它的来龙去脉,刷了些题之后也是感觉懵懵懂懂的,只能尝试套模版,但随着学习的深入,学了BFS,背包问题等更复杂的算法之后终于对搜索有了更全面的认识。如果你和我之前一样对搜索感到迷惑的话,千万不要放弃,争取每次理解一点,随着学习的深入,一定会慢慢体会到它的精髓的。加油,朋友!我们可以把它当成把1-n的扑克牌放到n个小盒子的...

2019-01-04 10:30:41 489

原创 Piggy-Bank题解 (另一种完全背包)

Time limit            1000 ms Memory limit       30000 kB OS                       Linux Before ACM can do anything, a budget must be prepared and the necessary financial support obt...

2019-01-03 19:21:47 643

适用于苹果系统国际象棋

棋盘为正方形,由64个黑白(深色与浅色)相间的格子组成;棋子分黑白(深色与浅色)两方共32枚,每方各16枚。虽然汉语称之为西洋棋或国际象棋,但是实际上它起源于亚洲,后由阿拉伯人传入欧洲,成为国际通行棋种,也是一项智力竞技运动,曾一度被列为奥林匹克运动会正式比赛项目。

2018-09-28

空空如也

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

TA关注的人

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