自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 树的直径

定义:对于一棵树,找到树上的两个节点并且他们的路径最长,该最长路径即为该树的直径求法:1、使用bfs或dfs:先取树中的一个点进行dfs/bfs,找到离该点最远的点p,点p一定是树直径的一个端点以该点在进行一次dfs/bfs,找到一个离p点最远的点q,则pq为该树的直径,且pq的距离为直径大小2、树形dp(待补全)代码:dfsvoid dfs(int ...

2019-08-06 21:36:00 105

转载 2019牛客暑期多校训练营(第四场合集)

C-sequence题意:题目给出长度为n的两个数组a,b,求出分析:标准题解:代码:(线段树+单调栈)#include<iostream>#include<stack>#include<cstring>#include<queue>#include<algorithm&g...

2019-08-05 21:00:00 201

转载 2019牛客暑期多校训练营(第二场合集)

H-Second Large Rectangle题意:输入一个n*m的矩阵,矩阵由字符0和1组成,需要你找到第二大的全为1的矩阵的大小分析:将n*m的矩阵转化为n个以i为底的直方图,利用单调栈分别对每个直方图进行求解,找出次大值前置知识:单调栈、相似习题:POJ 2559 POJ3494(题解)代码:#include<iostream>...

2019-07-30 20:23:00 113

转载 POJ - 2559 && POJ - 3494 (单调栈)

题目传送门:POJ - 2559Largest Rectangle in a Histogram   POJ - 3494 Largest Submatrix of All 1’sPOJ-2259题目大意:给出一个柱状统计图,该统计图由多个宽度为1高度不一的矩形构成,问图中包含最大的矩形面积是多少分析:每个矩形都有不一样的高...

2019-07-30 20:20:00 111

转载 POJ - 2796 Feel Good (单调栈)

题目传送门:POJ - 2796 Feel Good题目大意:给你一组个数组,需要你找到一段子区间的和乘上该区间的最小值是最大值。输出结果和区间分析:首先区间上的和可以使用前缀和,这样可以O(1)找到每个区间的和。现在需要考虑的便是每个区间对应的最小值,如果暴力则存在n2个区间,每个区间在找到最小值一定一定会超时。可以想到数组区间的最小值无非是数组原来的数,对于...

2019-07-30 18:04:00 182

转载 2019牛客暑期多校训练营(第一场合集)

J-Fraction Comparision题目大意:签到题,比较x/a 和 y/b 的大小,其中x,a,y,b的数据范围为0≤x,y≤1018 1≤a,b≤109分析:1、可以看为带分数的形式,先比较整数部分的大小,之后再比较分数部分的大小2、java大数类直接比较#include<iostream>using namespace ...

2019-07-23 00:10:00 509

转载 B-Icebound and Sequence(等比数列求和取模)

题目传送门:B-Icebound and Sequence(19年河北省赛)题目大意:等比数列求和,结果取模分析:因为取模操作,直接运用等比数列求和公式无法做出,所以需要用到公式求等比为k的等比数列之和S[n]..当n为偶数..S[n] = S[n/2] + pow(k,n/2) * S[n/2] n为奇数...S[n]...

2019-05-26 14:36:00 363

转载 POJ - 2763 Housewife Wind (树链剖分-边权和)

题目传送门:POJ - 2763 Housewife Wind题目大意:存在一个树形图,一个人一开始在s点,树上每条边都有时间花费,现在存在两种操作1、 0 u :查询这个人从他当前的点到点u的时间花费2、 1 i w :将第i条路径的时间花费更改为w分析:树链剖分,维护边权,用每条边深度较大的节点记录该边的边权,将边权改为点权,之后即可用线段树单点...

2019-05-07 21:41:00 145

转载 HDU - 3966 Aragorn's Story(树链剖分)

题目传送门:HDU - 3966 Aragorn's Story题目大意:存在一个树,树上每个节点为一个阵营,阵营中存在敌人,现在要进行以下操作I C1 C2 K :将阵营C1到阵营C2路径经过的每个阵营的人数+kD C1 C2 K :将阵营C1到阵营C2路径经过的每个阵营的人数-kQ C:查询阵营C中的人数。分析:点权树链剖分,线段树维护区间...

2019-05-07 21:09:00 97

转载 [SPOJ - QTREE] Query on a tree(树链剖分 - 边权最大值)

题目传送门:[SPOJ - QTREE] Query on a tree题目大意:存在一个树,树上有n个节点和n-1条边,对这棵树进行以下两种操作CHANGE i ti :将树的第i条边的权值改为tiQUERY a b :查询a->b路径中权值最大的边的值分析:边权树链剖分裸题,CHANGE操作是更改第i条边,因此边用结构体数组将其保存,用边...

2019-05-07 19:49:00 166

转载 1036: [ZJOI2008]树的统计Count(树链剖分 - 点权最大值&和)

题目传送门:[ZJOI2008]树的统计Count题目大意:一棵树上有n个节点,每个节点都有一个权值w。进行以下的一些操作I. CHANGE u t : 把结点u的权值改为tII. QMAX u v: 询问从点u到点v的路径上的节点的最大权值III. QSUM u v: 询问从点u到点v的路径上的节点的权值和分析:树链剖分入门题,线段树维护点权最大值mmax和...

2019-05-04 22:28:00 171

转载 CodeForces-1152C Neko does Maths(GCD)

题目传送门:CodeForces-1152CNeko does Maths题目大意:给你两个值a,b,让你求出使lcm(a+k,b+k),最小的k值gcd性质:gcd性质:gcd(a,a) = gcd(a,a)     gcd(a,b) = gcd(a,a-b)(a>b)      gcd(a,b) = gcd(b,a-b)(a>b)证明:设gcd(a...

2019-04-27 11:51:00 89

转载 CodeForces-1155D Beautiful Array

题目传送门:CodeForces-1155D Beautiful Array题目大意:数组的美值是此数组的某个连续子数组的最大总和(此子数组可能为空),现在存在一个有n个数的数组,同时拥有一个数x,你能够选择该数组的某个子段乘于x,求出该数组美值得最大值。分析:定义三个dp数组:dp1[]、dp2[]、dp3[]其中 dp1[i] 表示以a[i]结尾的最大子段和...

2019-04-23 21:09:00 130

转载 CSU - 1356 Catch (判奇环)

题目传送门:CSU - 1356 Catch题目大意:存在一个n个点m条边的无向图,给定一个出发点,每个时间点能够走到相邻的下个点。能够走重复的边,问是否存在某一个时间点,他可能停留再任意的n个点之间。分析:首先图是联通的,不连通则无法到达一部分点,可以发现如果该图是一条链的话,到达的点分两种情况(奇数时间到达和偶数时间到达)因此无法满足条件。当图是一个偶数环时...

2019-04-20 01:08:00 185

转载 Kattis - hoppers Hoppers(判奇环)

题目传送门:Kattis - hoppers Hoppers题目大意:你是一个黑客,现在你发明了一种感染病毒,这种感染病毒能够感染到与该主机相隔一个点的主机。存在一个无向图,每个点代表一台主机,每条无向边表示两台主机相连,现在你有个计划是通过感染一个电脑让所有电脑感染,你可以为两条电脑之间加边,需要你求出最少加多少条边能够完成计划分析:我们能够发现奇数环中任何一...

2019-04-20 00:11:00 451

转载 HDU - 4027 Can you answer these queries? (线段树)

题目传送门:HDU - 4027 Can you answer these queries?题目大意:存在n艘敌军战舰,每艘战舰都有能量值,我军存在一种秘密武器,每次能够将在该区间内的所有战舰的能量值开方,现在指挥官想要知道武器的效果,需要你告诉他该区间内敌军战舰的能量值之和分析:该题对区间进行操作,显然是用线段树。两个操作分别是对区间进行开方和区间求和,对区间...

2019-04-16 00:13:00 92

转载 回溯法理解

回溯法基本思想:构建问题的解空间树,在其解空间树中,从根节点出发,进行深度优先搜索。在搜索过程中,对解空间树的每个结点进行判断,判断该结点是否包含问题的解,若肯定不包含,则跳过对以该结点为根的子树的搜索,逐层向其祖先结点回溯。否则,则进入该子树,继续按深度优先策略搜索。步骤:1、针对所给问题,定义其解空间2、确定易于搜索的解空间结构3、深度优先搜索其解空间...

2018-12-18 00:56:00 245

转载 算法第5章上机实践报告

一、实践题目7-2工作分配问题题目描述:现在要将n份工作分配给n个人,其中每个人完成不同工作需要不同的花费,现在输入一个n表示n个人和n份工作,接着输入n行,每行n个数表示该人完成第i个工作所需要的花费。现在需要你求出为每一个人分配一件不同的工作,并使花费的最小值。样例1://输入310 2 32 3 43 4 5//输出9题目分析:...

2018-12-17 20:52:00 99

转载 贪心算法理解

贪心算法基本思想:贪心算法通过一系列的选择来得到问题的解,其中每一个选择都是当前状态下局部最好的选择,即贪心选择它有两个重要性质:贪心选择性质和最优子结构性质。贪心选择性质:指问题的最优解可以通过一系列局部最优解的选择得到。贪心算法做贪心选择可以依赖于以往所做过的选择,但决不依赖于将来所作的选择,也不依赖于子问题的解。最优子结构性质:指问题的最优解包含其子问题的最...

2018-11-28 12:05:00 175

转载 算法第四章上机实践报告

一、实践题目7-1最优合并问题题目描述:存在k个排好的序列,要用二路合并算法将其合并成一个序列。将长度为m和长度为n的序列合并需要比较m+n-1次,现在要求进行合并操作时,所需要的总比较次数最多和最少的次数。输入k,接下来的k个数为k个序列的长度样例1://输入45 12 11 2 //输出78 52题目分析:容易分析得出,如果每...

2018-11-28 10:35:00 106

转载 LCA RMQ+ST表学习笔记

RMQRMQ问题:在给定的一个长度位N的区间中,有M个询问,每次询问给出区间[L,R],求出区间段元素的最大值/最小值。对于RMQ问题很容易想到遍历的做法,将区间[L,R]中的元素遍历一遍,即可寻找到最大/最小值,但当区间长度较大,询问次数较多,就会耗费大量的时间。RMQ问题可以用线段树和ST表两种做法,下面介绍ST表。ST表法:ST表是用来解决RMQ问题非常高效...

2018-11-16 21:46:00 134

转载 算法第三章上机实践报告

一、实践题目7-3编辑距离问题题目描述:用最少的操作将字符串A转化成字符串B,其中操作包括三种。(1)删除一个字符;(2)插入一个字符;(3)将一个字符改为另一个字符。样例1://输入fxpimuxwrs //输出5题目分析:此题用动态规划的做法,首先需要定义F(i,j),表示长度为i的字符串A 转化为长度为j的字符串B的...

2018-11-10 16:52:00 108

转载 动态规划理解

动态规划基本思想动态规划算法与分治法类似,其基本思想也是将待求解问题分解乘若干个子问题,先求子问题,然后从这些子问题的解得到原问题的解。动态规划中分解得到的子问题往往不是相互独立的。若用分治法,则分解的子问题数目会太多,导致时间复杂度过高。在动态规划中我们将已解决子问题的答案保存在一个表,在需要时在找到以求的答案,这样可以避免大量的重复计算,这便是动态规划的基本思...

2018-11-07 19:30:00 117

转载 算法第二章上机实践报告

一、实践题目7-3两个有序序列的中位数题目描述:存在两个长度为n得有序序列S1、S2,求出S1、S2合并后得有序序列的中位数,要求算法实间复杂度O(logn)样例1://输入51 3 5 7 92 3 4 5 6//输出4样例2://输入6-100 -10 1 1 1 1-50 0 2 3 4 5//输出1...

2018-10-20 14:15:00 66

转载 对二分法思想的体会以及结对编程的感想

二分法:二分思想是解决编程问题的一个重要思想,通过分半不断缩小判定区间,来降低问题规模,最后达到降低问题复杂度的目的。采用二分法的条件是:1、符合单调性 2、中间值mid可判定二分搜索典型的二分法例子是二分搜索算法,算法将n个有序元素分成大致相同的两半,通过对中间值的判定,确定所求目标数所在区间,在不断进行区间分半操作,缩小判定范围,直...

2018-10-15 20:44:00 219

转载 POJ-1679 The Unique MST(次小生成树)

题目传送门:POJ-1679 The Unique MST题目大意:题目给了一个无向图,判断该图的最小生成树是否唯一。分析:要求出无向图的次小生成树,若次小生成树的权值和最小生成树权值一样,则最小生成树不唯一,否则唯一。求次小生成树:首先需要求出最小生成树,然后暴力枚举非最小生成树的边,将边加入最小生成树中,此时会形成一个环,将环中权值最大的边删除(不是新加入的边...

2018-10-12 22:56:00 116

转载 POJ - 3417 Network (LCA+树上差分)

题目传送门:POJ - 3417 Network题目大意:存在一棵n个结点的树,加入m条新边,现在要让这个图不连通,你可以切断两条边,要求切断一条原边,一条新边,求切割的方案数。分析:加入m条新边,假设加入新边(u,v),那么u-->lca(u,v)-->v-->u形成一个环,此时可以切断新边,和环上任意的一条原边就可以使图不连通。可以发现若加入一条...

2018-10-02 20:55:00 84

转载 HDU - 4547 CD操作 (LCA倍增)

题目传送门:HDU - 4547 CD操作题目大意:略分析:求出目录A 到 B所需要的CD操作次数,这里的A B 位字符串 所以用到map映射,之后直接求LCA分情况讨论即可:设求A到B的CD操作数1、A==B 需要的CD操作数是02、A是B的最近公共祖先,则A-->B的CD操作数是03、B是A的最近公共祖先,则B-->A的CD操作数是 deep...

2018-09-22 15:19:00 142

转载 HDU - 6115 Factory (LCA 倍增)

题目传送门:HDU - 6115 Factory题目大意:(中文题,简单解答下题意)存在N个城市和M个百度的子公司,N个城市间有N-1条道路连接(一颗树),每个子公司都有办公室,办公室分布在各个城市,现在提问,两个子公司间的最小距离。分析:枚举提问的两个子公司的办公室间的距离,求出最短距离即可:例如:子公司company1办公室在城市 1 2 3 子公司...

2018-09-22 11:37:00 98

转载 C/C++ 输出控制小数点位数

C/C++输出控制小数点位数的方法C++:在C++中输出要控制小数点的位数需要用到头文件iomanip中的setprecision(n)和setiosflags(ios::fixed)其中setprecision(n) 设置浮点数的有效数字为n  setiosflags(ios::fixed) 设置浮点数以固定的小数位数显示用法如下(代码示例)#includ...

2018-09-21 17:46:00 1487

转载 POJ-2421 Constructing Roads(最小生成树)

题目传送门:(POJ-2421 Constructing Roads)题目大意:要修公路,输入一个n,表示n个村庄。接着输入n*n的矩阵,该图的邻接矩阵,然后输入一个q接下来的q行每行包含两个数a,b,表示a、b这条边联通,就是已经有公路不用修了,要让所有村庄联通在一起问:修路最小代价?分析:根据题目输入构造邻接矩阵,然后把已经联通的村庄的距离设置为0,表示不用在修...

2018-08-17 11:08:00 88

转载 POJ - 2031 Building a Space Station(最小生成树)

题目传送门:POJ - 2031 Building a Space Station题目大意:给你n个球体,输入n,接下俩输入n行中每行有四个数,分别代表球的球心坐标x,y,z 和球径r 。可以在两球之间建立通道,现在要将所有球体联通,求最小代价。分析:可以知道任意两个球都可以建立通道,因此我们构建一张图,里面是所有球的所有通道,然后在跑prim就可以了通道的大小是...

2018-08-17 11:00:00 76

转载 POJ - 1251 Jungle Roads(最小生成树)

题意:有一个村庄网络(图),求该图的最小生成树首先输入n代表n个村庄,接下来的n-1行,每行首先输入一个大写字母表示一个村庄,接着输入一个数字num,表示和村庄连接的点的个数 接下来输入num对大写字母和数字,表示该村庄到另一个村庄的距离。比如:题目的第二组数组3A 2 B 10 C 40B 1 C 20表示:有三个村庄A村庄有两个连通的点B ...

2018-08-16 17:31:00 72

转载 最小生成树--prim学习笔记

最小生成树 prim问题引入:假设要在n个城市之间建立通信联络网,则连通n个城市需要n-1条路线,这是怎么样能在最节省经费的前提下建立这个通信网?可以用联通网来表示n个城市,以及城市间的通信线路。其中顶点代表城市,边代表城市间线路,边的权值表示相应代价。n个顶点的联通网可以建立许多不同的生成树,其中要求的便是代价和最小的生成树。也称最小生成树。构建生成树的算法多数...

2018-08-16 16:43:00 142

转载 STL--priority_queue学习笔记

priority_queue优先队列在学习了堆优化的迪杰斯特拉时,学了优先队列,发现非常好用。QAQ之前应该早点学的,哎,自己又菜又懒,咸鱼王无疑了。学习知识点记录下来!优先队列就是将队列中的元素赋予优先级,在访问优先队列中的元素时,具有最高优先级的元素先被访问。队列时先进先出,而优先队列是优先级最高的先出。初始化:需要 头文件 #include<queue&...

2018-08-15 12:27:00 88

转载 最短路---Dijkstra+堆优化学习笔记

Dijkstra算法+堆优化Dijkstra算法步骤:把顶点V分成两组:S:已经求出最短路径的顶点集合T=V-S:尚未确定最短路径的顶点集合1、初始时:令S={V0} T={其余顶点} T中的顶点对应的距离值若存在<V0,Vi>,则为该边的权值,若不存在则为INF(正无穷)2、从T中选取一个距离最小的顶点W,将该点加入集合S中。并用该点...

2018-08-15 11:41:00 118

转载 最短路---Dijkstra学习笔记

最短路---Dijkstra最近蒟蒻的自己重新学习了一遍最短路,也算有些体会,记录下来。首先引入问题:在一张图中,从某一顶点出发,沿图的边到达定一个顶点所经过的路径中,各边权值和最小的一条路径。解决该问题的算法有:Dijkstra算法,Bellman-Ford算法,Floyd算法和SPFA算法Dijkstra算法:介绍:Dijkstra算法是单源最短路算法的一种...

2018-08-14 17:31:00 115

转载 STL--vector学习笔记

<Vector>vector<T>容器是包含T类型元素的序列容器,vector<T>容器的大小可以自动增长,从而可以包含任意数量的元素,只要元素超出vector当前的容量,就会自动分配更多的空间。只能在vector容器尾部高效的删除或添加元素。可以方便灵活的代替数组存放元素。只要能够意识到,vector在扩展容量,以及在序列内部删除或添加元素时...

2018-05-17 13:45:00 71

转载 STL--queue学习笔记

<queue>只能访问queue<T>容器适配器的第一个和最后一个元素。只能在容器的末尾添加新元素,只能从头部移除元素。FIFO(先进先出)1.初始化需要头文件<queue>queue<int>que;2.成员函数C++队列Queue类成员函数如下:back()返回最后一个元素empty()如果队列空则...

2018-05-17 13:35:00 115

转载 NBUT - 1457 Sona (莫队算法+简单离散化)

题目链接:https://vjudge.net/problem/38739/origin题目表述:Sona,Maven of the Strings. Of cause, she can play the zither.Sonacan't speak but she can make fancy music. Her music can attack, heal, en...

2018-05-16 21:44:00 114

空空如也

空空如也

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

TA关注的人

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