洛谷OJ
文章平均质量分 66
洛谷的刷题记录
是一只派大鑫
知识改变命运,技术成就人生
展开
-
用Prim和Kruskal两种算法,求解最小生成树
用Prim和Kruskal两种算法,求解最小生成树,给出模板题以及解题代码。原创 2021-12-10 14:25:20 · 3705 阅读 · 1 评论 -
动态规划——最长公共子串,没有比这更通俗易懂的了
动态规划——最长公共子串,也是高频的考点,需要重点掌握原创 2021-12-09 13:45:45 · 20551 阅读 · 20 评论 -
动态规划——编辑距离
编辑距离不仅是动态规划里很经典的例题,也是面试中高频出现的题目,需要我们好好掌握。原创 2021-12-08 14:43:17 · 868 阅读 · 0 评论 -
动态规划——最长公共子序列(洛谷P1439)
动态规划的模板题,最长公共子序列原创 2021-12-06 14:57:36 · 1699 阅读 · 0 评论 -
C++ pair使用案例(一)
在写算法中,如果不想使用结构体,但是例如BFS这样的算法会用到存储一对的情况,我们可以考虑用pair原创 2021-12-05 13:41:37 · 2760 阅读 · 0 评论 -
动态规划——最大子段和(洛谷 P1115)
经典的动态规划基础题目,最大连续子序列和原创 2021-11-28 14:16:25 · 1188 阅读 · 0 评论 -
Dijkstra模板题——单源最短路径(洛谷 P3371)
这是Dijkstra的模板题,熟悉一下模板也是很好的~原创 2021-11-27 13:10:43 · 1499 阅读 · 0 评论 -
二分答案——yyy2015c01 的 U 盘(洛谷 P2370)
两种解法,01背包+排序,或是直接二分即可原创 2021-11-21 15:10:33 · 1089 阅读 · 0 评论 -
并查集——营救(洛谷 P1396)
看到最大的最小很多人想到二分,但是可以有更好的解法。原创 2021-11-08 13:51:59 · 1013 阅读 · 0 评论 -
二分答案——小车问题(洛谷 P1258)
主要是为了练习二分的基本思想原创 2021-11-08 13:16:47 · 1445 阅读 · 0 评论 -
广度优先搜索——好奇怪的游戏(洛谷 P1747)
简单的广搜模板题,4+8 = 12个方向进行bfs,目的地是(1,1)每次查看队首是否到达,若到达(1,1) 则返回队首步长即可~原创 2021-11-06 14:22:09 · 1090 阅读 · 0 评论 -
并查集模板——并查集(洛谷 P3367)
是并查集的最入门的题目,也是并查集的模板题~~原创 2021-11-04 14:56:41 · 1047 阅读 · 0 评论 -
二分+BFS——刺杀大使(洛谷 P1902)
我们在题面中看到了最大值最小这五个字。很容易就想到了二分答案。同时题目涉及图,以及只能从四个方向,所以想到了BFS的解法将这两种方法一起使用,就得到了答案!原创 2021-10-28 15:19:47 · 1211 阅读 · 0 评论 -
图论算法——幻象迷宫(洛谷 P1363)
大概就是说给出一个01迷宫类的地图,按照这个地图来扩展新地图,类似这样原创 2021-10-18 13:39:58 · 1184 阅读 · 0 评论 -
动态规划+深度优先搜索——挖地雷(洛谷 P2196)
本题是一道基础的练习题,可以采用动态规划和DFS的方法来求解。原创 2021-10-17 15:55:09 · 1042 阅读 · 0 评论 -
图论算法——Cow Picnic S(洛谷 P2853)
题目看着好像有亿点点复杂,实际上也很容易AC原创 2021-10-16 14:58:12 · 1142 阅读 · 2 评论 -
图论算法——词链(洛谷 P1127)
首先我们知道:如果字符串A的尾部等于字符串B的头部,那么说明这两个字符串是有可能相连的。原创 2021-10-16 14:15:10 · 1537 阅读 · 1 评论 -
图论——最长路(洛谷 P1807)
对于一个有向无环图,可以采取广搜将结点依次搜索,记录当前结点的最长路并在循环过程中不断更新。原创 2021-10-13 15:13:07 · 2164 阅读 · 0 评论 -
map集合——阅读理解(洛谷 P3879)
直接用map<string,vecotr<int> > 代替这题里的trie树,注意开map的时候后面两个> >之间要有一个空格。原创 2021-10-12 14:28:59 · 1411 阅读 · 0 评论 -
拓扑排序——最大食物链计数(洛谷 P4017)
这里具体讲一下为什么要用拓扑排序(思维过程)原创 2021-10-11 15:08:29 · 1315 阅读 · 0 评论 -
拓扑排序——杂物(洛谷 P1113)
把每个任务看作一个结点,如果两个任务x和y满足x是y的准备工作,那么在x和y之间连一条有向边。原创 2021-10-10 15:15:26 · 1468 阅读 · 0 评论 -
图论——图的遍历(洛谷 P3916)
如果反着建图,那么一个点能到的点不就成了能到那个点的点吗原创 2021-10-09 15:00:13 · 1320 阅读 · 0 评论 -
不重复数字(洛谷 P4305)
我们建一个结构体数组,存每个数字的值和出现的位置,}我们建一个结构体数组,存每个数字的值和出现的位置,先把数字按照值排序一遍原创 2021-10-08 13:48:38 · 1505 阅读 · 0 评论 -
图论算法——图的遍历
图的基本应用——图的遍历,从具体的题目着手,学习图的遍历方式及代码形式。原创 2021-10-06 16:25:54 · 5373 阅读 · 1 评论 -
并查集——程序自动分析(洛谷 P1955)
比较复杂一点的并查集题目,还用到了离散化的思想原创 2021-10-06 15:01:33 · 1953 阅读 · 0 评论 -
并查集——家谱(洛谷 P2814)
由于是字符串保存名字,使用数字对应数组来合并查找有一点麻烦,所以使用map将对应关系存起来即可。原创 2021-10-05 14:00:08 · 1649 阅读 · 0 评论 -
并查集——团伙(洛谷 P1892)
最基础的并查集是给出关系直接合并,这道题呢稍微多了一些条件,就是敌人的敌人也是自己的朋友,所以在合并的时候多了几步操作。原创 2021-10-04 14:21:53 · 1542 阅读 · 1 评论 -
并查集——集合(洛谷 P1621)
一道并查集类型的算法题,基本框架不变,就是合并的时候怎么合并,合并哪些数?原创 2021-10-03 15:28:48 · 1161 阅读 · 0 评论 -
并查集——关押罪犯(洛谷 P1525)
题目选自洛谷P1525此题是一道很经典,而且很好的题目。思路也十分的新颖,比较的难以捉摸。题面大意:(人性翻译)给你m对矛盾关系,每对关系分别涉及到x,y两人,矛盾值为w请你判断分配x和y到两个集合中,能否避免冲突如能避免请输出0,如果冲突不可避免,请输出最小的矛盾值以上是本人自己的“翻译”理解,接下来请看算法分析算法分析大致解析 先逆序sort一遍 假设a虚拟的敌人为a',b虚拟敌人是b',以此类推 a和b是敌人,连线a和b',b和a',代表原创 2021-10-01 14:52:57 · 1255 阅读 · 0 评论 -
Hash表——省市(洛谷 P3405)
因为值和前两个字母有关系,所以对每个字符串只保留前两个字母,相当于有N个二元组<ai,bi>,问<ai,bi> = <bi,ai> 的(i,j)对数。原创 2021-09-29 14:20:21 · 1247 阅读 · 1 评论 -
Hash表——字符串哈希(洛谷 P3370)
哈希其实是所有字符串操作中,笔者认为最简单的操作了(except输入输出qwq)。哈希的过程,其实可以看作对一个串的单向加密过程,并且需要保证所加的密不能高概率重复原创 2021-09-28 14:35:40 · 1541 阅读 · 0 评论 -
并查集——村村通(洛谷 P1536)
题目选自洛谷P1536并查集的变相考察类型的题目先处理每一条存在的边,即把每条存在的边所连接的两个结点用并查集合并起来。然后通过记录不同的代表元个数,就可以知道有多少个集合,即有多少个连通块了。可以发现,一条边只能把两个连通块合成为一个,即将连通块个数减少1,要实现全市任何两个村镇间都可以实现交通,即连通块只有一个,所以答案就是连通块个数-1,输出即可。那么,有多少个连通块呢?也就是有几个帮派! 当然就问 有几个老大了, 如果自己的老大是自己,那么自己就是这个帮派的老大了,就代表一原创 2021-09-28 13:36:40 · 1630 阅读 · 0 评论 -
并查集——亲戚(洛谷 P1551)
并查集入门题目,简单有趣的例子了解并查集的使用原创 2021-09-27 14:49:19 · 2227 阅读 · 0 评论 -
二叉树——二叉树问题(洛谷 P3884)
经过剖析样例,我微微思索手动模拟后发现 要找最近的公共祖先,一次次地向上找就好了嘛,其实这有点并查集地意思原创 2021-09-27 13:37:56 · 1783 阅读 · 0 评论 -
二叉树——求先序排列(洛谷 P1030)
题目选自洛谷P1030首先,一点基本常识,给你一个后序遍历,那么最后一个就是根(如ABCD,则根为D)。因为题目求先序,意味着要不断找根。那么我们来看这道题方法:(示例)中序ACGDBHZKX,后序CDGAHXKZB,首先可找到主根B;那么我们找到中序遍历中的B,由这种遍历的性质,可将中序遍历分为ACGD和HZKX两棵子树,那么对应可找到后序遍历CDGA和HXKZ(从头找即可)从而问题就变成求1.中序遍历ACGD,后序遍历CDGA的树 2.中序遍历HZKX,后序遍历HXKZ的树原创 2021-09-27 13:23:06 · 1413 阅读 · 0 评论 -
二叉树——新二叉树(洛谷 P1305)
题目选自洛谷P1305这篇用来二叉树入门,讲述遍历二叉树的基本过程代码, 新二叉树只是洛谷的题目叫这个。对于该题,我们用一个结构体node来表示树的每个结点,这个结构体数组tree来代表一棵树。结构体内保存结点的值(字符值),左、右孩子的下标,这样我们可以直接通过下标来访问树了,进而输出节点的值。为了知道根结点是从哪个开始的,我们在第一次输入三个字符之前记录一下第一个字符,对应的是哪一个位置就好。对于树,我们采用映射的思想,因为只有26个字母,所以我们将a放在0下标的位置...也就是原创 2021-09-26 14:55:31 · 2301 阅读 · 0 评论 -
二叉树——医院设置(洛谷 P1364)
从指定结点开始,使用DFS,对于某个结点来说,搜索的深度就是源点到这个结点的距离原创 2021-09-26 14:07:59 · 2409 阅读 · 1 评论 -
二叉树——美国血统(洛谷 P1827)
根据前序、中序遍历求出后序遍历,这也是二叉树很重要且基本的知识,还是有必要练练。至于什么是前、中、后序遍历,这里就不再过多讲述。原创 2021-09-25 13:47:13 · 2092 阅读 · 0 评论 -
二叉树——二叉树的深度(洛谷 P4913)
题目选自洛谷P4913题目描述给出每个节点的两个儿子节点,建立一棵二叉树(根节点为1),如果是叶子节点,则输入0 0。建好树后希望知道这棵二叉树的深度。二叉树的深度是指从根节点到叶子结点时,最多经过了几层。最多有10^6 个结点。输入格式无输出格式无输入输出样例输入 172 73 64 50 00 00 00 0输出 14解题代码:#include<stdio.h>#include<iostream...原创 2021-09-25 13:12:17 · 1617 阅读 · 0 评论 -
二叉树——淘汰赛(洛谷 P4715)
题目选自洛谷P4715二叉树知识点入门题目,便于学习、熟悉二叉树这种数据结构以及解题方法用value[]和win[]分别来记录能力值和国家编号,叶子层就是输入的能力值和国家编号,对二叉树进行dfs,结束条件为叶子结点,分别计算左右子树的结点值,并将获胜的编号、能力值保存到对应的父结点中,最后比较二叉树2、3编号的能力值大小即可。题目描述有2^n(n≤7)个国家参加世界杯决赛圈且进入淘汰赛环节。我经知道各个国家的能力值,且都不相等。能力值高的国家和能力值低的国家踢...原创 2021-09-24 15:39:23 · 2185 阅读 · 0 评论