随笔分类 - 洛谷官方题单
摘要:原题链接:https://www.luogu.com.cn/problem/P1983 题意解读:由于“如果这趟车次停靠了火车站x,则始发站、终点站之间所有级别大于等于火车站x的都必须停靠”。因此,在始发站和终点站之间,能停靠的车站都是级别较高的,没有停靠的车站都是级别较低的,计算最少有多少个不同级
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1347 题意解读:在给出多对关系字母的比较关系之后,判断能否确定所有字母的顺序。 解题思路: 对字母的关系建立图,如A<B建立A指向B的一条边。 如果在拓扑排序过程中,每次寻找入度为0的点只有一个,且最终可以形成拓扑序,
阅读全文
摘要:原题链接: 题意解读:迷宫可以无限扩展,对第一个样例进行模拟,扩展4块的示意图: 从起点S,沿着红色虚线,是可以无限走下去的,要判断是否能够无限走下去。 解题思路: 直观上,会考虑把迷宫复制多块,但是会面临2个问题: 1、内存可能爆掉 2、如何有效判断可以无限走下去?只考虑竖向或者横向连通是不够的,
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2853 题意解读:找到所有奶牛都可以到达的牧场,就是要从奶牛所在位置开始遍历,求所有奶牛能重合的点的个数。 解题思路: 直接从从牛奶所在位置进行DFS,记录每个位置有奶牛能到的个数,个数等于奶牛总数的即合适的牧场。 10
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1127 题意解读:按字典序排列单词,使得相邻单词的首位字母一样。 解题思路: 由于单词之间可以相邻的条件是前一个单词的末尾字母和后一个单词的开头字母一样,因此可以遍历每一个单词,再找到每一个可以接在其后面的单词, 建立一
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1807 题意解读:由于对于每一条边u->v,都有u < v,因此节点1的入度一定是0,且是有向无环图,直观上可以通过拓扑排序法搜索每一个节点,计算1到每一个节点的最长距离。但问题在于,入度为0的节点可能不止一个,这样在计
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P4017 题意解读:食物链的顶端不会被其他生物吃,在图结构中设定为入度是0,食物链的底端不会吃其他生物,在图结构中设定为出度是0,此题就是要计算所有入度是0的点到所有出度是0的点一共有多条路径。 解题思路: 首先,来模拟样
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1113 题意解读:要计算所有任务完成的最早时间,其实取决于最晚完成的那一个任务,计算每一个任务的完成时间,找最大值即可。 解题思路: 下面介绍两种做法:递推法、拓扑排序法 1、递推法 由于杂务k (k>1) 的准备工作只
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3916 题意解读:寻找每个点所能到达的最大的点。 解题思路: 直观上,可以依次从每个点开始DFS搜索,记录经过的最大点,复杂度是O(n^2)级别,会超时。 可以换一种角度,既然要找每个点可以达到的最大值,那么可以反向建图
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P5318 题意解读:图的建立、DFS、BFS模版题。 解题思路: 本题主要考察建图、图的DFS、BFS遍历。 建图方式:领接表vector<int> g[N]; 需要注意的是,在DFS、BFS搜索领接点时,需要先将领接点编
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P2814 题意解读:已知多组父子关系,找某个人最早的祖先,并查集的应用。 解题思路: 由于存在真正的父子关系,所以在并查集合并的时候,要把p[x] = y中x设置为子,y设置为父,其余都是并查集的常规操作。 由于是计算姓名
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P3879 题意解读:此题本质上是计算倒排索引,所谓倒排索引,即不是通过文章来找单词,而是通过单词来找文章。 解题思路: 要建立单词和文章之间的关系,一个单词对应多篇文章,且要按照文章编号排序,编号还要去重,可以使用如下数据
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P4305 题意解读:对数据进行去重,借助于set、map都可以解决 解题思路: 由于数据范围比较大,不能直接用数组hash,可以借助于set、map,这里采用map 唯一要注意的问题:本题输入输出数据量很大,需要用scan
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1955 题意解读:要判断约束条件是否可以同时满足,主要是要判断不相等的情况。 解题思路: 对于相等的条件,直接进行集合合并即可; 对于不相等的条件,判断两者是否属于同一个集合,如果形成矛盾,则条件不能成立。 由于i,j的
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1892 题意解读:此题与关押罪犯问题非常像,本质上就是要合并所有的朋友。 解题思路: 首先,初始化并查集; 对于每一对人的关系,如果是朋友,直接进行合并; 如果是敌人,先查看双方之前是否有记录其他敌人,如果有,则将一方与
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1621 题意解读:a~b之间的数,把有大于等于p的公共质因数的数进行合并作为一个集合,求一共有多少个集合。 解题思路: 要进行集合合并、统计集合数,可以使用并查集,有两种做法: 1、暴力法 80%的数据在1000范围内,
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1525 题意解读:有很多罪犯,要关到两座监狱,有一些罪犯之间有仇,并且可以量化出仇恨值,如果关在一起就会冲突,造成的影响就是仇恨值,要使得造成的影响最小,如果可以完全不起冲突,输出0。 解题思路: 首先,要让冲突影响最小
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1918 题意解读:又一个map的应用 解题思路:只需要用一个map<int, int>记录瓶子数和对应的位置即可。 100分代码: #include <bits/stdc++.h> using namespace std
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P1102 题意解读:前文https://www.cnblogs.com/jcwy/p/18043197介绍了二分和双指针的做法,本文介绍hash的做法。 解题思路: 定义map<int, int> h,保存每个数+c出现的
阅读全文
摘要:原题链接:https://www.luogu.com.cn/problem/P5266 题意解读:本题考察map的应用。 解题思路:直接使用map即可解题。 100分代码: #include <bits/stdc++.h> using namespace std; map<string, int>
阅读全文