搜索
算法
风萧萧兮易水寒丶
985软件工程本科在读
展开
-
Codeforces Maze(图、DFS)
题目大意:给定一个图,其中有若干个障碍和空地,空地之间互相连通,现在让你在空地中加K个障碍记为X,要求每一块空地之间仍然联通解题思路:思路1:逆向思维,先将所有空地变为X,记录总共的X的个数cnt,从中选取cnt-k个变为空地,选取一个X然后DFS产生空地且一定联通代码1:#include <bits/stdc++.h>using namespace std;char...原创 2020-04-24 14:02:13 · 181 阅读 · 0 评论 -
C++upper_bound与lower_bound(二分查找)
原创 2020-04-15 16:58:03 · 519 阅读 · 0 评论 -
装货物(搜索)
解题思路:这道题目标准答案应该是动态规划,但是考虑到这里的n非常小,可以通过DFS来解决,增加一种思路,应该是搜索每个货物应该放的箱子的编号。#include<bits/stdc++.h>using namespace std;#define ll long longconst int N = 1e4 + 10;const int INF = 0x3f3f3f3f;in...原创 2020-03-31 20:40:46 · 176 阅读 · 0 评论 -
树上求和(DFS)
解题思路:一条边左边节点个数乘以右边顶点个数等于这条边出现的次数#include<bits/stdc++.h>using namespace std;#define ll long longvector<int> e[100010];ll n,ans[100010],cnt;bool vis[100010];ll dfs(int x){ ll t=0...原创 2020-03-23 18:56:54 · 273 阅读 · 0 评论 -
洛谷—P1021 邮票面值设计(搜索/动态规划)
解题思路:首先这题的思路非常明确—搜索,但是这里要考虑怎么去搜索,根据题目要求的给定数目邮票组合,并且该组合在给定数目内组成的连续面值的序列最大。所以我们应该搜索出一个数目为k的不重复的邮票序列,使最后的答案最大。在搜索的过程中,假设现在搜索到第i个位置,则假定前i-1个序列数能组合成的最大值为f[i-1]*n(实际上可能并不能达到,这里只是为了给第i个值划定一个取值范围),则f[i]的取...原创 2020-02-24 16:05:32 · 290 阅读 · 0 评论 -
洛谷—P2678 跳石头(二分查找)
解题思路:每次跳跃的距离尽可能长,则搬掉m块石头后,每两个石头间的距离都要大于等于ansans一定在区间[0,L]中,那么我们进行二分查找,如果满足条件需要搬掉的石头数大于m,则说明此时mid大于ans如果满足条件需要搬掉的石头数量小于m,则说明mid小于ans二分搜索mid会越来越接近答案,知道最后mid等于答案后left和right错开中止循环代码:#include<io...原创 2020-02-20 13:41:07 · 263 阅读 · 0 评论 -
洛谷—P1434 滑雪(记忆化搜索)
#include<iostream>#include<cstdio>#include<cmath>using namespace std;int dx[4]={0,0,1,-1};int dy[4]={1,-1,0,0};int n,m,a[201][201],s[201][201],ans;bool use[201][201];//这个就是所谓...原创 2020-02-10 17:48:55 · 133 阅读 · 0 评论 -
洛谷—P1215母亲的牛奶(深度优先搜索\记录路径)
解题思路:这道题目思路很明确,肯定是要用深搜的,由于不同的桶之间,这里每次决策有6条可能的路径,但是要记录采取决策后每个桶的牛奶数量是否已经访问过,如果访问过,则不再重复访问。#include<iostream>#include<algorithm>using namespace std;bool visit[25][25][25];int ans[25];...原创 2020-02-09 15:53:13 · 195 阅读 · 0 评论 -
洛谷—P1141 01迷宫(查找连通块、记忆化搜索)
#include<iostream>#include<queue>#include<vector>using namespace std;struct pos{ int x, y; pos(int x, int y) { this->x = x; this->y = y; }};char map[1010][1010]...原创 2020-02-07 12:25:03 · 154 阅读 · 0 评论 -
洛谷—P1219八皇后
#include<iostream>using namespace std;int map[14][14];int n;int ans;int a[1000];int b[1000];int col[14];int arr[14];void dfs(int depth){ if (depth == n+1) { if (ans < 3) { ...原创 2020-02-07 12:20:48 · 133 阅读 · 0 评论 -
洛谷—P1101 单词方阵
需要记录方向的深度优先搜索#include<iostream>using namespace std;char map[200][200];bool visit[200][200];int go[8][2] = { {1,1},{-1,-1},{-1,0},{0,-1},{1,0},{0,1},{1,-1},{-1,1} };int pos[7][2];const ch...原创 2020-02-07 12:19:47 · 75 阅读 · 0 评论 -
深度优先算法 DFS 全排列 例题笔记
补全等式下图中,每个方块代表 1…131\ldots131…13 中的某一个数字,但不重复。例如:只要有任意一个方块代表的数字不同,就算两种不同的方案。请你计算,一共有多少种不同的方案。这里利用深度优先算法进行搜索#include<iostream>using namespace std;bool visit[14] = { false };int arr[12]...原创 2020-01-28 16:13:29 · 588 阅读 · 0 评论