图
ming_514
这个作者很懒,什么都没留下…
展开
-
zoj 2100 dfs暴力宽搜
昨天晚上训练赛做的一个题,一看宽搜,昨晚没有想到一个回溯,一会写出来,然后就一直在改改改,最后加了一个回溯就ok了。这个题和其他的题有一些不同,这个需要回溯,这个是不能走走过的路,如果你走过去,下一步没办法走了,你要回溯回去,然后走过的路程减一,最后判断走过的路和s的个数加起来是否等于m*n 就可以It is spring time and farmers have to plan原创 2017-06-30 10:19:31 · 369 阅读 · 0 评论 -
uva-1423Guess 拓扑排序
这个题训练赛的时候不会做,想瞎搞没搞出来,比赛结束后,才知道是拓扑排序,也想巩固一下拓扑排序,先说一下拓扑排序使用拓扑排序是一个有向无环图(DGA)的所有顶点的线性排列,该序列满足两个条件一:每个顶点出现且最多一次。二:若存在一条从顶点 A 到顶点 B 的路径,那么在序列中顶点 A 出现在顶点 B 的前面。对于一个有向无环图如何找出它的拓扑排序呢,首先找一个起点,所有的起点的入原创 2017-08-24 10:57:58 · 249 阅读 · 0 评论 -
uva 12083 二分图匹配
这个题有两种做法,可以一开始就换成两种点集,一种男生一种女生,然后匹配的时候就跑出来那个最大的,用总共的减去那个最大的就可以,这种做法当时没有想起来,建边的时候直接两个都建边,跑全部的,最后的最大匹配除以2,因为男生和女生都可以当匹配点所以,就最后的结果除以2就可以#include #include #include #include #include #include #in原创 2017-08-24 11:04:40 · 203 阅读 · 0 评论 -
Silver Cow Party POJ - 3268 最短路
这个题目就是单向图,所有的 起点到终点终点到起点的最短路距离之和,求一个最大值。方法我是用的spfa 然后对于处理上,我是用的循环,可能这样跑的时间比较长,可以再做一个处理 用数组去保存下来那个最短路的信息也是可以的。#include #include #include #include #include #include #include #include #include原创 2017-10-09 15:11:26 · 165 阅读 · 0 评论 -
The Unique MST POJ - 1679
这是一个次小生成树的基础题,这个题的想法,就是先写一个最小生成树,建立最小生成树的时候,把每个点的边还有结点用vector保存无向图,然后遍历每一个结点,找出这条边上的最大值,如果这个点没有遍历过那就更新最大值。#include #include #include #include #include using namespace std;const int INF = 0x7ff原创 2017-09-22 11:03:16 · 181 阅读 · 0 评论 -
Tactical Multiple Defense System UVALive - 7008 二分图匹配
这个题目是训练赛的一个题目,当时一开始以为是一个几何,仔细读题后,我和队友确定这是一个最大匹配,然后建边,建边的时候一个点确定一个半径,然后判重跑一边匈牙利就行。判重的方法很多,我这个做法有点太暴力~~~直接枚举的。#include #include #include #include #include #include #include using namespace std;原创 2017-10-31 16:33:23 · 312 阅读 · 0 评论 -
B - Bus Problem UVALive - 7001 最小生成树
这个也是一个板子题目,题目的要求就是一颗最小生成树,#include #include #include #include #include using namespace std;const int maxn=1000+100;struct note{ int u; int v; int cost; bool operator <(const原创 2017-10-31 16:41:57 · 289 阅读 · 0 评论 -
Design Tutorial: Inverse the Problem CodeForces - 472D 最小生成树,好题目
一开始的思路并不是建一颗最小生成树,只是想是否能通过其他的边,然后建立出来的树对应的路径是否和矩阵对应的距离相同,或来想到了可以用最小生成树,然后对于每个起点dfs都更新一遍距离,就可以。其实也可以不用最小生成树可以模拟一边最小生成树prim算法,这是一个思维题目,是一个好题#include #include #include #include #include using name原创 2017-11-16 14:48:09 · 268 阅读 · 0 评论 -
关键活动(30 分)
这个题目就是关键路径。正向拓扑更新结束时间,保留最后结束的那个点,然后反向查找存入路径,按照题目要求就是输出的时候,和读入顺序有关,用一个数组记录一下,然后排个序就可以了讲解一下关键路径,关键路径就是最长的一条路径。比如在做一个项目,每条路径都是其中一个工程,所以在正向拓扑的时候选择一个最后结束的点,也就是最后结束的工程这工程不结束,这个项目也没有办法结束。然后反向查找,刚才的路径,就是从原创 2017-11-16 15:07:20 · 2927 阅读 · 0 评论 -
社交网络 HYSBZ - 1491 floyd最短路计算
自己的最短路还不能够熟练地掌握,这一个就是弗洛伊德算法,加上乘法原理,就可以计算出在社交网络(socialnetwork)的研究中,我们常常使用图论概念去解释一些社会现象。不妨看这样的一个问题。在一个社交圈子里有n个人,人与人之间有不同程度的关系。我们将这个关系网络对应到一个n个结点的无向图上,两个不同的人若互相认识,则在他们对应的结点之间连接一条无向边,并附上一个正数权值c,c越小,原创 2017-07-22 10:06:57 · 259 阅读 · 0 评论 -
hdu-3729 二分图匹配匈牙利算法
这个题,是组队赛中的一个题,当时学姐说是一个匈牙利求最大匹配,然后正好有板子,自己就照着板子做出来了,赛后,去了解这一个算法,学到了不少,先说一下这个题吧,为什么要用二分图匹配,这个一个是学生,一个是成绩,有两个点集,每一个学生所说的是一个名次区间,用匈牙利算法可以找出来最大的匹配,然后就可以找出来说真话的人最多,题目中说字典序最大,就是注意逆序查找就可以对于第i个人,我们知道他的合法区间[a原创 2017-07-30 16:25:04 · 391 阅读 · 0 评论 -
并查集的使用例题uva208
一开始用连通做的,后来学习了一下白书上的并查集写法过的,用并查集挺简单的,很好过,学习一波,代码写的不好,以后还要多多努力题目很简单。我的博客里面还有用连通过的方法,都可以作为参考#include #include #include #include #include using namespace std;const int maxn = 21 + 4;int par[原创 2017-05-17 09:53:29 · 238 阅读 · 0 评论 -
poj 3461 kmp算法
首先说这个题目的意思,就是去匹配然后找出最多能够匹配的次数这个题一开始直接暴力没有过,就感觉这应该是我没有接触过的算法,训练赛结束后去学习,知道了关于字符串的kmp算法,说实话对于这个算法了解还不够很详细,先学习了这个板子,以我现在的水平去了解这个算法有点难度,关于字符串的那个覆盖问题,有点难以理解,以后了解更多会回来再更这一篇博客的#include #include #include #i原创 2017-07-10 23:06:08 · 258 阅读 · 0 评论 -
HDU-1010 dfs+剪枝
这个题一开始直接暴力回溯,一直超时,后来加上距离判断也不对,最后想到了最短路,就是到达重点的最短路,减去那个时间能够取余2才可以。现在来说一下这个题目的意思吧,就是从起点走到终点,然后不能在原地停留,还有一个就是必须在那个时间到达,这个时候就需要我们去判断路径问题。#include <iostream>#include <cstdio>#include ...原创 2017-07-15 10:18:04 · 464 阅读 · 4 评论 -
uva 225 dfs + 减枝
这个题很坑,一开始自己就以为那个图的大小就是12 * 12,去做,但是不对,很头疼。后来才知道那个并不是的,坐标可以是负的,如果是负的话,自己的程序就跑不了了,,借鉴了一下就过了。一开始用bfs写的,自己的代码能力还不行,写不出来,所以,用了dfs。注意一点这个题是要减枝的,就是当你不可能走回原点的时候是要减枝的,所以需要注意这一点附上代码,写的不好还望见谅#include #inclu原创 2017-05-21 20:55:48 · 184 阅读 · 0 评论 -
poj 3126 打表加bfs最短路
昨晚训练赛做出来的第一个题,读懂题意就会做,这题的题意可以理解为从一个数到另外的一个数,每次只能变化一位,而且变化后还是一个素数,所以直接打表做了。找一个最短路,基本的思路。写代码的能力还是不行,多加练习,这里对于每一位进行取余这个有一个小思路。看代码吧这个打表我认为挺快的了,可以学习一下,一直都在用这个表#include #include #include #include原创 2017-05-20 11:02:53 · 260 阅读 · 0 评论 -
poj 3009 冰壶游戏隐式图搜索
这个题在搜索的时候需要注意一点,这图的搜索方法有区别于他的搜索方法,我自己一开始做的时候就是搜着搜着不动了,注意当他碰撞到一面墙的时候,那面墙是会碎的。还有需要注意这个走的是一个直线,用一个while循环来做就可以。这一个题是一个不错的搜索有一些需要注意的方法都在代码中提到#include#include#includeusing namespace std;int d原创 2017-05-18 15:04:06 · 374 阅读 · 0 评论 -
poj 2718 dfs搜索或者枚举全排列
先说一下这个题的题意就是对于一个字符串任意的分成两个部分,然后求这两个部分的最小差,数据不算太大,直接排序暴力过就行,注意一点就是,分成的部分,如果第一位是零的话是不算的记住这一点应该很简单就能做出来全排列暴力过#include #include #include #include #include #include using namespace std;const i原创 2017-05-18 14:52:57 · 283 阅读 · 0 评论 -
uva 1601万圣节后的早晨 双向bfs
第一次接触双向bfs,认真学习了别人的代码,跟大佬学习一波,双向dfs并不是节约一半的时间,他的时间当n约大的时候,节约的时间越多,所以当n很小的时候,还是用dfs比较简单一点。双向的bfs就是在一个在起点一个在终点,分别搜索点,分别对走过的位置做标记,如果走过的位置有相同的,则说明是相通的从这一次的学习中,更加对bfs状态搜索有了一些了解,自己看了一个双向的,加一改进,然后自己又写了原创 2017-05-18 10:09:56 · 334 阅读 · 0 评论 -
uva 208 追溯加查连通
这个注意连通的部分,直接追溯会超时。题目很好理解,注意是按照字典序还有从一开始。原创 2017-05-15 21:30:01 · 236 阅读 · 0 评论 -
蓝桥杯 java 合根植物
这个题目,就是并查集,然后再去遍历一遍,看看有几个源头,就知道分为几部分。其实可以用连通做,就是如果两个是一个源头的话,就一直往下走,直到走不到,因为要的是连通数,题目给输入样例,所以直接这样做就可以了。import java.*;import java.util.Scanner;public class Main { static int[] father = null; ...原创 2019-03-11 20:26:28 · 266 阅读 · 0 评论