自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 二叉树相关问题:二叉树的深度,通过前序遍历和中序遍历求出后序遍历

一、二叉树的深度我们通过递归求出树中以每个结点为根节点的左子树和右子树的最大深度。以下图为例从C结点开始,首先求C结点的左子树的深度,C结点的左子树的深度等于B结点的左子树的深度+1,这样层层递归,当递归到A结点时返回深度为1。右子树深度同理代码如下:#include<iostream>using namespace std;#define MAX 1000010struct Node{ int left; int right; };Node tree[MAX];

2021-06-10 10:08:06 718 1

原创 [洛谷]1967 货车运输(Kruskal+链式向前星+倍增LCA)

一、题目描述二、解题思路原来用单纯的Kruskal算法超时了,看了大神们的方法第一次学链式向前星和倍增LCA,下面详细介绍以下链式向前星和倍增LCA三、链式向前星链式向前星是一种加快稠密图搜索的一种方法,它是在邻接表的基础上的一种优化,它的存储结构如下:struct node{ int to; int next; }edge[maxv];to表示边的终点,next表示与该条边的起点相同的上一条边在edge中的索引。因此下一步需要解决的问题就是如何找到上一条在edge中的位置。可以多

2021-06-07 08:28:03 270

原创 [洛谷] P4047 部落划分:最小生成树

一. 题目描述二.解题思路呜呜呜是我太菜了,大家都说这是一道水题,可是我还是看来别人的解答才自己写出来。具体的解题思路可以看这一篇。使用Kruskal算法。初始时有n个居住点就有n个部落。每次都选最短边,每选一条,部落数就-1。最后需要k个部落,那么就选择了n-k条边,所以第n-k+1边的长度即为所求。三. AC代码#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<stdio.h>#include&lt

2021-06-02 13:26:53 263

原创 [POJ] 1276 Cash Machine:二进制优化的多重背包问题

一.题目描述二. 解题思路该题如果套用普通的多重背包问题那么会超时,因此我们必须降低时间复杂度。下面来介绍多重背包的二进制优化,优化后多重背包问题就转化为普通的01背包问题。二进制拆分思想:假设第i种物品有si件,将第i种物品拆分成若干件物品,每件物品的件数和价值乘以一个拆分系数(1,21,22,…,2k-1,si-(2k-1))。例如si=12,那么拆分系数就是1,2,4,5,转化成4件01背包的物品:(vi,wi),(2vi,2wi),(4vi,4wi),(5vi,5wi),那么就由原来的12

2021-05-28 19:55:24 166

原创 [POJ]1837 Balance动态规划

一. 题目描述二. 题目大意有一个天平有C个挂钩,G个砝码。用上所有的砝码使得这个天平保持平衡。这不就是,初中学过的杠杆原理吗?2 4 // C,G-2 3 //挂钩的坐标3 4 5 8 //每个砝码的重量三. 解题思路动态规划。设dp[i][j]表示前i个砝码全部挂上去后平衡度为j的挂法有多少种。平衡度:j=天平右边的力臂-左边的力臂当挂上前i-1个砝码后,再挂第i个砝码,这时的平衡度只和挂上前i-1个砝码的状态有关,我们假设在天平的某个挂钩挂上第i个砝码后,此时的平衡度为j,那么

2021-05-28 15:06:31 326

原创 [POJ] 1860 Currency Exchange:Bellman Ford变形

一、题目描述二、解题思路这是一道Bellman Ford的变形题。要确保经过兑换后本金会增加,只要兑换的路径中有一个正环就行,那么经过无数次循环后本金一定会增加很多。通过Bellman Ford算法可以判断一个图中是否有负环,只要对代码稍加修改就可以判断图中是否有正环。不了解Bellman Ford算法的小伙伴可以看最短路径(二):Bellman-Ford算法三、AC代码//WA原因:把汇率和佣金都定义为int型的数据了 #include<iostream>#include<

2021-05-24 10:49:59 80

原创 [POJ] Find the Multiple(dfs深搜)

一、题目描述二、解题思路从1开始不停深搜0或者1,把每一步的搜索路径存在数组中。如果可以整除的话就打印输出数组中的数字。考虑到数字可能很大,不能判断是否可以整除n,我借鉴了除法的竖式过程,每一次搜索只保留个位和十位数字。#include<iostream>using namespace std;#define MAX 100int n;int digital[MAX]; //记录数字int number; //记录个数bool flag;void dfs(int in

2021-05-21 09:56:27 81

原创 CCF: 201503_4网络延时

解题思路这是一道树的直径的模板题。树的直径就是树上最长的简单路径。解题思路就是从树中选取任意一点sss出发,深度遍历得到一条以sss点为起点的最长路径,这条路径的终点是www。再从www出发,深度遍历得到一条以www为起点的最长路径,那么这条路径就是树的直径。实现代码#include<iostream>#include<vector>using namespace std;#define MAX 20002vector<int> tree[MAX]; .

2021-04-08 23:50:46 69

原创 CCF:201403_4无线网络

思路首先我想到的是使用最短路径算法。但是有一个问题就是最短路径可能不符合要求,即经过的路由器中新增路由器超过了k个。如果dist[i]dist[i]dist[i]数组增设一维,即dist[i][k]dist[i][k]dist[i][k],表示在新增了k个路由器后顶点iii距离源点的当前最短距离。还需要注意的是算两点间距离的平方的类型应该是$long longlonglong型。我使用SPFA算法,实现代码如下:#include<iostream>#include<vector&g.

2021-04-07 17:57:05 80

原创 最短路径(三):SPFA算法

Bellman-Ford算法中每轮算操作都需要操作所有边忙着其中会有大量无意义的操作,严重影响算法的性能。仔细思考我们可以发现,只有当某个顶点u的dist[u]值改变时,从u出发的边的邻接点v的dist[v]值才会发生改变。因此可以对Bellman-Ford算法进行如下优化:建立一个队列,每次将队首顶点u取出,然后对从u出发的所有边进行松弛操作,判断dist[u]+weight[u][v]<dist[v]dist[u]+weight[u][v]<dist[v]dist[u]+weight[u]

2021-04-05 20:55:10 125

原创 最短路径(二):Bellman-Ford算法

Dijkstra算法可以很好地解决无负权图的最短路径问题,但是如果出现负权变,Dijkstra算法就会失效,如下图所示:A为源点时,首先会将B的dist值变为-1,并且B的访问值会改成True,之后将无法被从点C出发的边NB更新,因此dist[B]就是-1,但显然A到B的最短历经长度应该是-4。Bellman-Ford算法(BF算法)可以更好地解决有负权边地最短路径问题,但是无法解决负环问题显然零环和正环不会影响最短路径的求解,因为零环和正环的存在不会使最短路径更短,但是负环不然一. 算法思想B

2021-04-05 20:01:29 382

原创 最短距离(一):Dijkstra算法

一. 算法思想Dijkstra算法是按路径长度递增次序产生最短路径的算法。把图的顶点集V分为两组S:已求出最短路径的顶点的集合T=V-S:尚未确定最短路径的顶点集合把T中顶点按照最短路径递增的次序加入到S中,保证:从源点V0到S中各顶点的最短路径长度都不长于从V0到T中任何顶点的最短路径长度设置辅助数组dist[n]dist[n]dist[n],每个分量dist[k]dist[k]dist[k]表示当前所求得的从原点到其余各个顶点k的最短路径长度二.算法步骤设G[n][n

2021-04-03 15:18:26 2427

原创 各种排序算法对比

2021-03-31 16:50:39 73

原创 CCF C++

一、vector找到vector中的某个元素。vector是没有find函数的,但是可以借助algorithm头文件中的find函数来实现这一功能。如果需要查找的元素是一个结构体,可以在结构体中重载“==”#include<iostream> #include<vector>#include<algorithm>using namespace std;struct Point { int x; int y; bool operator == (co

2021-03-04 16:38:38 123 1

原创 [1001]Exponentiation

描述Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems.This problem requires that you write a program to co

2021-03-01 14:45:01 124

原创 机器学习方法的分类

一.监督学习百度百科定义:利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习。提供给学习器的训练数据既有特征又有标记。例如你喂给学习器多张图片,每张图片都带有标签(cat,dog,rabbit…),然后机器就可以根据这些特征和带有的标签来学习。以后再给它一张新的图片,它就能自动识别出这张图片中的动物。二.无监督学习通俗理解就是提供给学习器的训练数据只有特征,不带标签。用上面的例子,这时的图片就不带标签了,这要求学习器学习后能自动分类。以后再给它一张新的图片,它

2020-09-23 14:08:25 997

原创 操作系统简述题

✔什么是操作系统?它的功能?操作系统是控制和管理计算机硬件和软件资源,合理地组织计算机工作流程以及方便用户使用计算机系统的程序的集合。功能:处理机管理,存储器管理,I/O设备管理和文件管理✔分段存储管理和分页存储管理的区别①页是信息的物理单位,为实现离散存储,提高内存利用率而引入;段是信息的逻辑单位,为满足用户要求而引入②页的大小固定且由系统确定;段长不定,取决于用户程序,并在编译时划分③分页的作业地址空间是一维的,分段的作业地址空间是二维的✔分页、分段、段页式存储管理的优缺点分页:优点

2020-09-12 10:32:38 939

原创 数据库期末复习——简述题

1.存储过程的优点程序设计模块化程序员无需了解其内部结构,只需了解存储过程的名称、参数、返回值和作用即可,以后可以在程序中随意调用。执行效率高第一次被执行后存储过程就存储在服务器的内存中,客户机程序再次执行时可以直接调用内存中的代码执行,无须再次进行编译,大大加快了执行速度。减少网络流量代码操作由一条执行存储过程代码的单独语句就可以实现,而不需要在网络中发送数百行代码。作为安全机制使用对于没有直接执行存储过程中语句权限的用户,也可授予他们执行该存储过程的权限。...

2020-09-04 16:46:05 2807

原创 算法期末复习——简述题

✔动态规划算法的主要步骤①找出最优解的性质,刻画其结构特征②递归地定义最优解③以自底向上的方式计算出最优解④根据计算最优值得到的信息构造最优解✔描述分治法的基本思想将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同:对这k个子问题分别求解。如果子问题的规模仍然不够小,则再划分为k个子问题,递归进行下去直到问题规模足够小。将求出的小规模的问题的解合并为一个更大规模的问题的解,逐步求出原来的问题✔描述分治法的基本思想✔回溯法与分支限界法的差异求解目标不同:一般而言

2020-09-04 11:12:43 503

原创 数据库系统概述

一.数据库系统管理数据的特点1.结构化的数据及其联系的集合2.数据共享性高,冗余度低3.数据独立性高独立性是指数据库中的数据与应用程序间相互独立。数据库的结构可分为三级:用户逻辑结构、数据库逻辑结构和物理结构。数据独立性有两级:物理独立性和逻辑独立性物理独立性当数据库物理结构改变时,数据库的逻辑结构不受影响,进而用户逻辑结构以及应用程序不用改变。逻辑独立性当数据库逻辑结构发生改变时,用户逻辑结构以及应用程序不需要改变。4.有统一的数据管理和控制功能数据的安全性控制防止不合法使.

2020-09-03 11:11:34 3132

原创 分支限界法

一.基本概念1.问题状态:树上任意一个结点是一个状态结点2.状态空间:由根到其他状态的所有路径3.答案状态:满足约束的一个叶子结点对应一个解答4.状态空间树:表示状态空间的树5.活结点:一个自身已经生成但其儿子还没有全部生成的结点6.E-结点:一个正在产生儿子的结点7.死结点:一个所有儿子已经产生的结点二.搜索方法1.广度优先搜索2.深度优先搜索3.启发式搜索:从初始状态开始,每次选择最有可能达到终止状态的结点进行搜索分支限界法与回溯法的不同:1.搜索方式不同:回溯法以深度优先的方

2020-08-28 09:22:11 936

原创 回溯算法及典型例题

大多是使用回溯算法的题目都符合以下条件:输出可以看作一个n元组(x1,x2,…,xn),例如八皇后问题。元组需要满足一些约束条件。个人认为回溯算法和暴力法有很大的相似度,但是回溯算法会在每次构造解的过程中进行剪枝。整个选择过程可以构成一棵状态空间树,树的根可以代表查找解之前的初始状态。大多数情况下可以用DFS的方法来生成状态空间树。如果当前结点是有希望的,可以继续深度遍历,否则回溯到父母节点。首先来看一道经典例题一.八皇后问题1.问题描述在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击

2020-08-25 11:37:59 4506

原创 关系数据库例题

数据库有三个基本表:S(S#,SNAME,AGE,SEX),C(C#,CNAME,TEACHER),SC(S#,C#,GRADE)。用关系代数表达式表示下列查询语句解答

2020-08-24 17:47:50 2230 1

原创 数据库的可靠性

一.并发控制与封锁(一)事务1.定义事务是数据库系统中执行的一个工作单位,它是由用户定义的一组操作序列。一个事务可以是一组SQL语句、一条SQL语句或整个程序,一个应用程序可以包括多个事务。 DBMS的并发控制是以事务为基本单位进行的2.特征原子性一个事务是一个不可分割的工作单位,事务在执行时,应该遵守“要么不做,要么全做”(Nothing or All)的原则,即不允许完成部分的事务。一致性事务对数据库的作用是数据库从一个一致状态转变到另一个一致状态。所谓数据库的一致状态是指数据库中的数

2020-08-20 20:38:02 2854

原创 数据库的完整性

一.含义数据库的完整性是指保护数据库中数据的正确性、有效性和相容性,防止错误的数据进入数据库造成无效操作。二.完整性规则的组成(1) 触发条件:规定系统什么时候使用完整性规则来检查数据(2) 约束条件:规定系统检查用户发出的操作请求违背了什么样的完整性约束条件(3) 违约响应:规定系统如果发现用户发出的操作请求违背了完整性约束条件,应该采取一定的动作来保证数据的完整性,即违约时要做的事情注:关系模型的完整性包括实体完整性、参照完整性和用户定义完整性实体完整性实体完整性要求每个表都有唯一标识

2020-08-20 20:14:49 884

原创 数据库的安全性

一.含义数据库的安全性是指保护数据库以放置非法使用所造成的数据泄露、更改或破坏二 .安全性控制的一般方法1.含义安全性控制是指要尽可能杜绝所有可能的数据库非法访问2.安全控制模型3.安全性措施用户标识和鉴定系统内部记录着所有合法用户的标识,每次用户要求进入系统时,由系统进行核实,通过鉴定后才提供计算机的使用权用户存取权限控制用户存储权限指不同的用户对于不同的数据对象允许执行的操作操作权限。存取权限的两个要素是数据对象和操作类型。用户的存取权限有两种:系统权限和对象权限定义视图为不

2020-08-20 18:25:05 1974

原创 关系模式的范式(带例题详细解析)

一些概念1.码:码是一个或多个属性的集合,是唯一标识实体的属性2.超码:一个或多个属性的集合,超码中的属性可以在一个实体集中唯一地标识一个实体3.候选码:极小的超码集,是可以唯一地标识关系中元组的一个属性或者属性集4.主码:从候选码中选出一个作为住主码5.主属性:包含在任一候选码中的属性称主属性。简单来说,主属性是候选码所有属性的并集6.非主属性:不包含在候选码中的属性称为非主属性。 非主属性是相对于主属性来定义的。一.第一范式1.定义如果关系模式R中所有的属性均为原子属性,即每个属性都是

2020-08-09 19:11:57 25400 8

原创 一.算法效率分析

一.算法的最优、最差和平均效率1.最优效率Big O把函数t(n)包含在O(g(n)),记作t(n)∈\in∈O(g(n));其成立条件为对于所有足够大的n,t(n)的上界由g(n)的常数倍确定,即存在大于0的常数c和非负的整数n0,使得:对于所有的n≥\geq≥n0,都有t(n)≤\leq≤cg(n)性质:O(kf(n))=O(f(n)),其中k为常量O(f(n))+O(g(n))=max(O(f(n)),O(g(n)))O(f(n))*O(g(n))O(f(n)*g(n))2.最差

2020-08-06 09:58:08 1432

原创 网络流:初学菜鸟级选手

目录网络流最大流EK算法 一.网络流二.最大流问题网络流最大流EK算法正文 一.网络流菜鸟本鸟是第一次接触网络流,觉得新奇又有趣 ,先来介绍一下网络流的定义接着说一下什么叫可行流。可行流满足两个性质:容量限制条件:fij<=Cij,那就是你水管上的流量不能超过水管的容量,否则就爆炸了平衡条件:即从一个点流入的等于从这个点流出的二.最大流问题简单点来说就是研究一下如何使你家的水管不爆,最终又能获得最大的水流量的问题,首先介绍一下EK算法...

2020-05-26 11:48:00 234

原创 数据库 连接查询

2020-04-28 09:57:40 198

原创 一些做题小技巧

一,判断字符串转化成的int型变量是否溢出这里指的是理想情况,即字符串中的字符只包含数字和±号public int myAtoi(String str) { int flag=1; //正负标记 int res=0; int i=0; if(str.charAt(i)=='-') flag=-1; if(str.charAt(i)=='-'||str.charA...

2020-04-16 11:05:24 131

原创 数据结构:平衡二叉树 AVL

1.需要二叉平衡树的理由我们平常用二叉搜索树进行查找,若原数列是是有序的,那么构成的二叉搜索时就是完全倾斜的,如下图:此时退化成了一个链表,查找效率为O(n).查找的效率取决于树的高度。平衡二叉树左右子树的高度相差不超过 1 ,即可保证查找的效率。2.平衡因子某节点的左子树与右子树的高度(深度)差即为该节点的平衡因子(BF,Balance Factor),平衡二叉树中不存在平衡因子大于 ...

2020-04-08 22:23:58 142

原创 Leecode5:最长回文子串

题目描述:给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。方法一:求最长公共子串。(动态规划)我们知道一个回文串不论正着读还是逆着读都是一样的,我们根据这个特征来动态规划求解。现在问题转化成了两个字符串的最长公共子串的求解。最后我们只需要附加一些判断条件就可以知道这是不是个回文串了。我们需要建立一个二维数组,arr[len][len],其中arr[i]...

2020-03-29 16:59:36 125

原创 数据结构:图的存储结构和遍历

大一学的数据结构现在印象有点模糊了,于是想重新整理一下那些我用的还不是很熟练的数据结构目录图的邻接表1. 图的邻接表首先来看一下结构体定义#define MAX_VERTEX_NUM 10typedef struct EdgeNode{ //边表结点 int adjvex; //结点的索引 struct EdgeNode* next; //这条边指向的下一个顶点}Edg...

2020-03-26 10:24:04 521

原创 LeeCode4:求两个有序数组的中位数

求两个有序数组的第k个数,要求时间复杂度是O(log(m+n))

2020-03-23 22:55:21 157

空空如也

空空如也

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

TA关注的人

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