自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 8086cpu标志寄存器

1.条件码(状态)标志:OF:溢出标志位 (无符号数运算时 数位溢出置1)SF:符号标志位 (运算结果为负数时置1)ZF:零标志位 (运算结果为0时置1)CF:进位标志位 (运算时向最高位有进位或借位时置1)AF:辅助进位标志位 (同CF不过其针对的是中间位)PF:奇偶标志位 (用于数据发送时接收方校验所收数据真实性 , 发送方通过填充奇偶标志位使得发送数据的二进制数的1的个数为奇或为偶)(8086为奇校验)2.控制标志:DF:方向标志位 (串处理时地址自动加减的方向)IF : 中断标志位

2022-03-09 19:01:45 1942

原创 TCP/IP协议

传输层主要有两个协议:TCP(传输控制协议):为应用层提供可靠的、面向连接的、基于流的服务。UDP(用户数据报协议): 为应用层提供不可靠、无连接、基于数据报的服务。TCP协议是面向连接的可靠(超时重传 , 确保数据能发送到目的端)的传输协议。tcp协议更关注传输控制层(传输层)以下的体系结构,其上囊括入应用层中

2022-02-24 21:44:42 1441

原创 差分数组。

1,什么是差分数组:差分数组就是一个用来记录原数组数据差值的数组,比如差分数组的arr[i] = arr[i] - arr[i - 1] (i > 0) , i = 0 时差分数组的arr[i] 就是原数组的0下标的元素。2,差分数组有什么用:当我们想让一个整形数组的某段区间加上或减去同一个数时,我们的一般操作就是遍历我们想改变的区间,依次计算,当数组足够大并且需要计算的区间足够大而且需要多次进行这种操作时,这样的操作所耗时间比较多。这时,我们可以利用差分数组,只需修改需要计算的区间的边

2021-08-31 23:16:11 391

原创 c++ bitset

使用bitset需要添加头文件bitset ,bitset是一种特殊的容器 ,bitset数组中 ,每个成员只装1bit位的数据 , 即只能是0 或 1。bitset 的基本用法 :初始化bitset容器bitset<‘size’> 容器名;未初始化容器数据,会默认每位都是0也可以给一个具体的初始化:存入int数据bitset<‘size’> 容器名(‘num’);会将num以二进制形式储存在bitset中,如果初始化的容器位数不够 ,会截取num二进制形式下的左边部

2021-08-22 22:57:29 310

原创 Boyer-Moore 投票算法

摩尔投票是用于找出一串数据中,数量多于数据一半的数例题:数组中占比超过一半的元素称之为主要元素。给你一个 整数 数组,找出其中的主要元素。若没有,返回 -1 。请设计时间复杂度为 O(N) 、空间复杂度为 O(1) 的解决方案。class Solution {public: int majorityElement(vector<int>& nums) { int candidate = -1; int len = nums.size();

2021-07-09 20:22:35 68

原创 在一个字符串中 添加n个某字符

string st = "";st += string(10 , 'a');//在st字符串末尾加上10个字符a

2021-07-03 20:49:13 813

原创 leetcode 815

公交路线给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。例如,路线 routes[0] = [1, 5, 7] 表示第 0 辆公交车会一直按序列 1 -> 5 -> 7 -> 1 -> 5 -> 7 -> 1 -> … 这样的车站路线行驶。现在从 source 车站出发(初始时不在公交车上),要前往 target 车站。 期间仅可乘坐公交车。求出 最少乘坐的公交车数量 .

2021-06-28 21:18:11 117

原创 计算二进制下1的个数

int count = 0; while(n) { count += (n & 1); n = n >> 1; } return count; int count = 0; while(n) { n = n & (n - 1); count++; } ...

2021-06-23 20:19:54 56

原创 leetcode 97

交错字符串给定三个字符串 s1、s2、s3,请你帮忙验证 s3 是否是由 s1 和 s2 交错 组成的。两个字符串 s 和 t 交错 的定义与过程如下,其中每个字符串都会被分割成若干 非空 子字符串:s = s1 + s2 + … + snt = t1 + t2 + … + tm|n - m| <= 1交错 是 s1 + t1 + s2 + t2 + s3 + t3 + … 或者 t1 + s1 + t2 + s2 + t3 + s3 + …提示:a + b 意味着字符串 a 和 b 连

2021-06-20 21:47:57 72

原创 leetcode 877

石子游戏亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。亚历克斯和李轮流进行,亚历克斯先开始。 每回合,玩家从行的开始或结束处取走整堆石头。 这种情况一直持续到没有更多的石子堆为止,此时手中石子最多的玩家获胜。假设亚历克斯和李都发挥出最佳水平,当亚历克斯赢得比赛时返回 true ,当李赢得比赛时返回 false 。示例:输入:[5,3,4,5]输出:true解释:亚历克斯先开.

2021-06-16 21:15:22 83

原创 leedcode 91

一条包含字母 A-Z 的消息通过以下映射进行了 编码 :‘A’ -> 1‘B’ -> 2…‘Z’ -> 26要 解码 已编码的消息,所有数字必须基于上述映射的方法,反向映射回字母(可能有多种方法)。例如,“11106” 可以映射为:“AAJF” ,将消息分组为 (1 1 10 6)“KJF” ,将消息分组为 (11 10 6)注意,消息不能分组为 (1 11 06) ,因为 “06” 不能映射为 “F” ,这是由于 “6” 和 “06” 在映射中并不等价。给你一个只含数

2021-06-15 16:55:26 99 1

原创 Trie(前缀树、字典树)(c++、c实现)

思维导图前缀树的核心思想是利用字符串的前缀去匹配字符串,可以不用去管那些和前缀不符的字符串,例:已有["hello" , "world" ,"happy "]我们需要检索是否已存入hello此时的Trie为匹配hellow时,从hellow的第一个前缀往后匹配现在我们来看下前缀树的c++实现代码#include<iostream>using namespace std;const int L = 26;//模拟26个字母class Trie{private

2021-05-25 21:48:49 210

原创 蓝桥杯 历届试题 平面切分

解析见代码:#include<iostream>#define max_size 1010using namespace std;int ans=1;//没有直线时有一个平面float jd[max_size][2];//交点可能含小数,故用float型void f(int i,int arr[1010][2],int a,int b){ int temp=0;//统计当前直线与在它之前直线的不同交点数 for(int j=1;j<i;j++) .

2021-05-08 16:45:38 476

原创 并查集

并查集:并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。常常在使用中以森林来表示。这是我百度的关于并查集的定义,在我看来并查集是把一些有关系的元素放到一个集合,这样我们就可以判断任意元素间的关系。这样我们就可以先利用已知的关系创建并查集,然后判断元素间的关系。例如有的题就会给你一堆已知关系,a和b是亲戚,b和c是亲戚,d和f是亲戚…让你判断随意给出的两个人存不存在亲戚关系。当关系网比较庞大时我们人为比较难判断,用并查集就很好解决。创建并查集我们需

2021-04-26 15:50:00 460

原创 最小生成树(克鲁斯卡尔算法 普里姆算法)

最小生成树是处理图结构中,简化图的算法;即删除一些边使得图得以简化,形成树结构,但应保证图中任意点都是相连通的。形成的最小生成树应该使得从顶点遍历时走过边的权值和最小。(有n个节点,则最小生成树的边数应为n-1)如:变为最小生成树后:处理最小生成树有两种方法:1.克鲁斯卡尔算法(kruskal):这种算法是先把所有的边拿出来,按其权值从小到大的顺序排列,然后从最小的边开始还原图,即按该边连接其顶点。从权值值最小的边依次连接,每次连接都要判断本次连接是否形成了环,若是,则改变没有必要还原,当还原

2021-04-24 11:39:20 21714 4

原创 合法括号

由1对括号,可以组成一种合法括号序列:()由2对括号,可以组成两种合法括号序列:()() 、(())由4对括号组成的合法括号序列一共有多少种?输入括号对数输出能组成的合法括号数#include<iostream>int sum=0;//统计方案数void DFS(int n,int l)//待处理n为符号数,l为未匹配的左括号{ if(n==0) { if(l==0) sum++; } else if(l<0)

2021-04-17 10:38:33 157

原创 树的直径(节点的最大距离)

树的直径是指相隔距离最大的两个节点间的距离,这两个节点一般是叶子节点,也有可能一个端点是根节点。求树的直径的做法:可以选取任意一点遍历整棵树,找到最远点,该点一定是直径的一个端点,再从该点再次遍历整棵树,找到最远点,则该点一定是直径的另一个端点。例题:链接问题描述很久以前,T王国空前繁荣。为了更好地管理国家,王国修建了大量的快速路,用于连接首都和王国内的各大城市。为节省经费,T国的大臣们经过思考,制定了一套优秀的修建方案,使得任何一个大城市都能从首都直接或者通过其他大城市间接到达。同时,如果不重

2021-04-17 09:21:50 354

原创 图 最短路径

//最短路径://第一行输入 n m (n为节点数,m为边数)//接下来输入n-1行 s t c(s头,t为尾,c为权值)//找到最短路径#include<iostream>#include<vector>#define max_size 100//这里需要优化,可计算的数据范围不够大,太大了a数组会有问题using namespace std;vector<int> v[max_size];//用于装下一个节点int a[max_size][max_s

2021-04-15 18:11:27 101

原创 &、|、~、、^、<<、>>运算符

这四种运算符都是在2进制的情况下进行的如10的二进制为00001010(八位)1的二进制为000000011、按位与(&):10&1的结果就是两个二进制数相同位进行按位与,即有0则结果为0,都是1则结果为10000101000000001=00000000可用来判断一个数的奇偶,如11的二进制数按位与1的二进制数00001011&00000001=00000001代码为 if (num &1 ) num为奇则为真,为偶则为假2、按位或(|):按位或与按位与

2021-04-10 15:32:29 982

原创 历届试题 数字三角形 动态规划

资源限制时间限制:1.0s 内存限制:256.0MB问题描述p1.png上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右边的那个数。此外,向左下走的次数与向右下走的次数相差不能超过 1。输入格式输入的第一行包含一个整数 ,表示三角形的行数。下面的 行给出数字三角形。数字三角形上的数都是 至 之间的整数。输出格式输出一个整数,

2021-04-08 16:10:32 124

原创 算法训练 结点选择 动态规划

算法训练 结点选择 动态规划资源限制时间限制:1.0s 内存限制:256.0MB问题描述有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?输入格式第一行包含一个整数 n 。接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。接下来一共 n-1 行,每行描述树上的一条边。输出格式输出一个整数,代表选出的点的权值和的最大值。样例输入51 2 3 4 51 21 32 4

2021-04-06 08:56:16 76

原创 算法训练 K好数 动态规划

资源限制时间限制:1.0s 内存限制:256.0MB问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格式输入包含两个正整数,K和L。输出格式输出一个整数,表示答案对1000000007取模后的值。样例输入4 2样例输出7数据规模与约定对于

2021-03-30 11:20:14 59

原创 线段树

线段树 理解线段树主要是为了降低对非常庞大的数组的操作的时间复杂度,常见的操作有:对数组中的某一段元素求和。修改数组中某个指定位置元素的值。求某段元素中的最大最小值。线段数基于二叉数,它是把一个数组从中间分成两段,再往下把每段再分成两段,直到每段的数据只有一个元素,作为叶子节点,采用递归操作,递归往回走的过程中又通过叶子节点,自下往上求出其下每段数据元素的总和,下面是哔哩哔哩上的 正月点灯笼 的线段树的课程的截图:c++创建线段树代码如下:struct tree_node//可以先宏定义

2021-03-27 21:51:04 109

原创 蓝桥杯 算法训练 区间k大数查询

算法训练 区间k大数查询资源限制时间限制:1.0s 内存限制:256.0MB问题描述给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式第一行包含一个数n,表示序列长度。第二行包含n个正整数,表示给定的序列。第三个包含一个正整数m,表示询问个数。接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。输出格式总共输出m行,每行一个数,表示询问的答案。样例输入51 2 3 4 521

2021-03-25 16:53:08 84

原创 蓝桥杯 试题 算法训练 审美课 求优化

试题 算法训练 审美课资源限制时间限制:1.0s 内存限制:256.0MB问题描述  《审美的历程》课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手。老师请同学们分辨哪些画的作者是梵高,但是老师自己并没有答案,因为这些画看上去都像是小朋友画的……老师只想知道,有多少对同学给出的答案完全相反,这样他就可以用这个数据去揭穿披着皇帝新衣的抽象艺术了(支持帅老师_)。  答案完全相反是指对每一幅画的判断都相反。输入格式  第一行两个数n和m,表示学生数和图画数;

2021-03-24 22:00:20 51

原创 蓝桥杯 算法训练 P0505

试题 算法训练 P0505资源限制时间限制:1.0s 内存限制:256.0MB  一个整数n的阶乘可以写成n!,它表示从1到n这n个整数的乘积。阶乘的增长速度非常快,例如,13!就已经比较大了,已经无法存放在一个整型变量中;而35!就更大了,它已经无法存放在一个浮点型变量中。因此,当n比较大时,去计算n!是非常困难的。幸运的是,在本题中,我们的任务不是去计算n!,而是去计算n!最右边的那个非0的数字是多少。例如,5!=12345=120,因此5!最右边的那个非0的数字是2。再如,7!=5040,因

2021-03-23 19:20:56 50

空空如也

空空如也

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

TA关注的人

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