笔记
KGW_Yuan
这个作者很懒,什么都没留下…
展开
-
POJ 1086 Currency Exchange(SPFA判断正环)
spfa的深入理解https://blog.csdn.net/qq_43093454/article/details/88812117spfa本身是对Bellman-ford算法的优化。在Bellman-Ford算法中,n轮扫描每一条边看一看各个点有没有希望被松弛。spfa之所以能用来处理Bellman-ford并进行优化,其原因是在Bellman-ford中,每一轮扫描的边有很多都没有可能更新其它点。spfa指出,当一条边有希望更新它的一个端点的最短路值,当且仅当它的另一个端点的最短路值被更新过。s原创 2020-11-16 15:09:16 · 103 阅读 · 0 评论 -
POJ3279 Fliptile
POJ3279 Fliptile(一个需要小技巧的爆搜题)思路:通过观察可以发现,当我们确定了第一行各个位置翻或不翻后,在处理第二行时,第二行每个位置翻或不翻应该是固定的,因为若想使第一行全变白,有且仅有第二行可以做到。以此类推,除第一行外,其余每行翻或不翻都是确定的。我们仅需暴力枚举第一行每个位置是否翻,然后处理其余每行。需要注意的是:在我们处理完m-1行后,需扫一遍最后一行是否已全变为白色,若是,则可用于更新答案。题目还要求该答案的字典序最小,我们可发现一种方案只与第一行有关,所以在dfs枚举第原创 2020-09-08 18:34:42 · 79 阅读 · 0 评论 -
POJ2251 Dungeon Master
POJ2251 Dungeon Master(典型的入门宽搜)思路:本题乍一看可以用迭代加深搜索来解决,但其3D地图大小限制在303030以内,显然通过迭代加深搜索来解决肯定会T掉,故可采用普通的宽搜bfs来解决与深搜的“不撞南墙不回头”不同,宽搜是逐层扩展进行搜索,在扩展时一定是将最先进入队列的(步数小的)处理完毕后再处理次小的,并以此类推…因此我们第一次搜到这个点可以知道这即是由起点到达该点的最优解,因此我们在搜索过程中可用vis数组标记,且不需回溯(因为一但该点被标记后,一定不会有更优的路原创 2020-09-08 15:52:04 · 54 阅读 · 0 评论 -
luogu P1803线段覆盖
luogu P1803 线段覆盖(典型的贪心:在所有区间中能够选择多的区间的个数)思路:比较简单易想:每次选择新区间时,仅需在所有符合条件的区间选择右端点最小的区间,因为这样可以保证下一次选择时可供选择的区间最多实现:首先将所有区间按照右端点从小到大排序,然后遍历一遍,遇到符合条件的便使ans++(因为已经按照右端点从小到大排序,可说明此时遍历到的第一个符合条件的区间即为最优解)代码实现:#include<iostream>#include<cstdio>#includ原创 2020-09-08 08:31:17 · 127 阅读 · 0 评论 -
POJ2376 Cleaning Shifts
POJ2376 Cleaning Shifts(贪心经典例题:区间覆盖问题)基本的贪心问题:给几段区间,用最少的区间覆盖一个特定区间,求解最小的区间数基本思路:将所有区间存入一个结构体中,按照其左端点从小到大排序,若两区间左端点大小相同,则按照右端点从大到小排序(因为两区间若左端点相同选择覆盖更多的区间显然更合算)即在操作时:设变量end代表当前覆盖到那个点了,设变量need,并令其need=end+1(假设end覆盖了1~10,则我们下一步需要有区间能够覆盖end+1及以后);同时循环条件为覆盖到原创 2020-09-07 23:36:43 · 94 阅读 · 0 评论