![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
搜索
文章平均质量分 61
__Rain
这个作者很懒,什么都没留下…
展开
-
ABC 211 E(DFS
E - Red Polyomino 题意:给定一个 n×nn\times nn×n 的格子,′#′'\#'′#′ 代表黑色,′.′'.'′.′ 代表白色我们每次选出 kkk 个白色的格子并涂成红色,并且红色格子必须是连通的(上下左右移动可以从任意一个红色格子到另外一个红色格子),求有多少种染色方案思路:DFSDFSDFS方案去重的思路比较妙code:#include<bits/stdc++.h>#define endl '\n'#define ll long long#de原创 2022-04-06 20:11:41 · 650 阅读 · 3 评论 -
最小步数模型(bfs
D - 8 Puzzle on Graph题意:将 3∗33*33∗3 的矩阵转化为字符串表示一种状态最终状态即为 123456789123456789123456789思路:突然想起来一道典中典的搜索题没有写博客code:#include<bits/stdc++.h>#define endl '\n'#define ll long long#define ull unsigned long long#define ld long double#define all(x)原创 2022-02-22 21:53:09 · 381 阅读 · 0 评论 -
ABC 236 D(普通dfs,配对
D - Dance思路:奇妙の搜索题需要一些优化code:#include<bits/stdc++.h>#define endl '\n'#define ll long long#define ull unsigned long long#define ld long double#define all(x) x.begin(), x.end()#define eps 1e-6using namespace std;const int maxn = 30 + 9;co原创 2022-01-24 09:05:40 · 513 阅读 · 0 评论 -
ABC F(并查集判断是否存在合法交换方案+DFS复原交换方案
F - Swap and Sort题意:给定一个 NNN 的排列 PPP 和 mmm 个操作,每个操作给定两个数 a,ba,ba,b,表示 P[a]P[a]P[a] 和 P[b]P[b]P[b] 可以交换位置,每次可以选定任意操作执行,判断能否把这个排列变成升序的,如果能,则按顺序输出操作的编号,否则输出 −1-1−1思路:号码牌ACWing上这道题目的加强版判断是否存在解,只需要用并查集扫一遍判断当前位置的 P[i]P[i]P[i] 与 iii 是否位于同一个连通块,如果存在不在一个连通块则原创 2022-01-19 00:21:27 · 130 阅读 · 0 评论 -
01 bfs 学习
01 bfs简介bfsbfsbfs 可以 O(V+E)O(V+E)O(V+E) 求解边权全为 111 的图上最短路。而当边权只有 000 或 111 时,使用其它最短路算法是有些浪费的,此时可以使用 bfsbfsbfs 的变种:01bfs01 bfs01bfs 来快速求解,复杂度仍为 O(V+E)O(V+E)O(V+E).01bfs01bfs01bfs 维护一个双端队列,当边权为 000 时,使用 push_frontpush\_frontpush_front,当边权为 111 时,使用 push_原创 2021-12-11 21:17:41 · 1418 阅读 · 0 评论 -
bfs搜索 与搜索顺序有关
迷宫code:#include<bits/stdc++.h>#define endl '\n'#define ll long long#define ull unsigned long long#define ld long double#define all(x) x.begin(), x.end()#define eps 1e-6using namespace std;const int maxn = 5e2 + 9;const int mod = 1e9 + 7;c原创 2021-12-12 10:48:51 · 514 阅读 · 0 评论 -
# 756 div3 E1 E2(dfs F(双指针
E1. Escape The Maze (easy version)题意:一个人从节点 111 开始出发,但是有 kkk 个阻碍,起点在 xix_ixi 节点,如果中途遇到阻碍则会输掉游戏,每秒只能移动到相邻的节点,也可以不移动。判断他能不能一定走到一个叶子节点,而不碰到阻碍。思路:显然他能胜利的条件就是存在一个叶子节点,111 到叶子节点的距离小于 kkk 个阻碍到叶子节点的距离ans[i]ans[i]ans[i] 数组表示阻碍到节点 iii 的最小距离dfsdfsdfs 暴搜两次即可先原创 2021-11-26 10:41:23 · 3105 阅读 · 0 评论 -
#718 div1+div2 C题 思维贪心 + dfs
C. Fillomino 2题意:给定一个 nnn 个数的排列 ppp,构造一个下三角矩阵对角线从左上角到右下角,pip_ipi 位于 (i,i)(i<=n)(i,i) (i<=n)(i,i)(i<=n) 点然后对于每个 pip_ipi,下三角中出现 pip_ipi 次,且这 pip_ipi 个数是连通的输出构造的矩阵即可思路:贪心+dfs即可对于对角线上的每个点,我们肯定要贪心得先往左扩展,然后再往下扩展,这样就能给右边留出足够的空间code:#include原创 2021-07-06 10:02:45 · 86 阅读 · 0 评论 -
记忆化搜索 本质是dp
滑雪不知道为什么超时的代码#include<iostream>#include<cstdio>using namespace std;int r, c;int maze[109][109];int vis[109][109];int ans;int dx[4] = {0,0,1,-1};int dy[4] = {1,-1,0,0};bool judge(int x, int y){ if(x < 1 || x > r || y < 1 ||原创 2021-03-12 19:12:50 · 107 阅读 · 0 评论 -
河南省赛2021
七便士dfs回溯#include<bits/stdc++.h>using namespace std;const int N = 1e5 + 9;int n, m, k, t;char s[10];int v[10], vv[10];int cnt = 0;bool f = 0;void dfs(int sum){ if(sum == 7 || f){ f=1; return; } for(int i = 1; i <= 8; ++i) { if(原创 2021-05-30 18:59:46 · 193 阅读 · 1 评论