![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
专题练习
不会喷火的绿色小恐龙
这个作者很懒,什么都没留下…
展开
-
2021-06-29
题目 考察并查集。最开始写这道题时,想着进行距离不超过d的点放在一组,最后通过数组vis对’O’输入的数字进行记录。但是尝试很久,发现不行。因为距离大于d的两个点之间可进行多次转移,而转移的方式很多,这是就无法判断了。所以改用边加入点,边合并点。 并查集是一种用来管理元素分组情况的数据结构。并查集可以高效地进行如下操作。不过需要注意并查集虽然可以进行合并操作,但却无法进行分割操作。 查询元素a和元素b是否属于同一组。 合并元素a和元素b所在的组。 #include <cstdio> #inc原创 2021-06-29 13:16:41 · 38 阅读 · 0 评论 -
2021-06-28
题目 并查集的简单应用,但是本菜鸡依然觉得很难。主要是不确定如何建立同类和捕食关系。因为无法确定某一个动物的具体角色,所以令每一个动物都具有三种角色。 #include <cstdio> const int maxn=150010; int father[maxn]; void init(int n){ for(int i=1; i<=n; i++) father[i]=i; } int find(int r){ while(r!=father[r]){ r=father[原创 2021-06-28 14:53:06 · 43 阅读 · 0 评论 -
HDU 2612
题目 求最短路,最小值最好用bfs。 这道题目的代码,本菜鸡写的比较傻。 #include <cstdio> #include <map> #include <queue> #include <cstring> #include <algorithm> using namespace std; const int maxn=202; char maze[maxn][maxn]; int n, m, ans=1000; int d1[maxn][ma原创 2021-06-02 20:50:09 · 61 阅读 · 0 评论 -
POJ 3126
题目 bfs,简单搜索在于状态如何转移,即一个状态向另一个状态转移时的判断条件,以及结束时的条件 这道题目写了好几遍,一直不知道自己错在哪里。今天再写的时候发现,下一个状态的数字可以比上一个状态的数字小,比目标数字大 #include <cstdio> #include <queue> #include <cstring> #include <cmath> using namespace std; const int maxn=1e5+10; int d[ma原创 2021-06-02 20:21:53 · 34 阅读 · 0 评论 -
POJ 1321
题目 这道题之前写很久,就是写不出来了。注意题意——“要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列”.这道题给我的感觉,很像n皇后问题(提到这个,我差不多已经忘了这个问题了)。这里只需要对行进行递归,对列记录并判断。 #include <iostream> using namespace std; int n, k, ans=0; char maze[8][8]; bool vis[8]; void dfs(int row, int index){ if(row==n){ i原创 2021-05-20 21:25:47 · 41 阅读 · 0 评论 -
POJ 3278
题目 这道搜索题,写了很久,一直没过。我一直使用dfs,无论怎样限定递归条件,始终过不了(当然,本人实在菜鸡)。今天,按照《挑战程序设计》这本书写的,对于最短路径问题,采用bfs最好。虽然,我还是不能完全懂这两种搜索方式的不同之处;但是较于以前,我明白了bfs为什么可以得到最优结果。 #include <iostream> #include <queue> #include <cstring> using namespace std; #define INF 1e9 co原创 2021-05-20 20:47:21 · 47 阅读 · 0 评论