![](https://img-blog.csdnimg.cn/20190927151124774.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
搜素
文章平均质量分 66
dfs,bfs
陌上花开 ~
越努力,越幸运(研究生在读)
展开
-
模拟退火(D Country Meow,POJ 2420,POJ 1379)
D Country Meow 最小球覆盖模板题,模拟退火算法题意:给定空间内 N 个点,求某个点到 N 个点的距离最大值的最小值代码(含详细注释):#include<bits/stdc++.h>#define LL long longusing namespace std;const int INF=0x3f3f3f3f;const int M=150;const double eps=1e-3; //精度//模拟退火有一个初始温度,温度越高,接受较差的解的可能原创 2021-02-26 13:20:49 · 235 阅读 · 1 评论 -
L2-016 愿天下有情人都是失散多年的兄妹 (dfs,离散化)
L2-016 愿天下有情人都是失散多年的兄妹 (25 分)因为人的id都是整数,所以这道题可以离散化,也可以不离散化,在此给出两种方式的代码:非离散化代码:#include<bits/stdc++.h>#define f(i,a,b) for(int i=a;i<b;i++)using namespace std;//const int N=1e5+5;char c[N];vector<int> v[N];int n,flag=0;int vis[N];原创 2022-03-26 16:45:05 · 1174 阅读 · 0 评论 -
L2-038 病毒溯源 (dfs,24与25分)
L2-038 病毒溯源 (25 分)思路1(24分):vector<int> v[N]建立邻接表,之后对v[i]从大到小排序,便于寻找最小序列,但是只得了24分代码(24分):#include <bits/stdc++.h>#define debug(x) cout<<#x<<":"<<x<<endl;#define f(i,a,n) for(int i=a;i<n;++i)#define ff(i,a,n) for原创 2022-03-17 00:15:59 · 875 阅读 · 0 评论 -
dfs入门(洛谷等例题)
回溯法——1700:八皇后问题回溯法(back track method)回溯法(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。思路: 题目大意:通过对一个除叶子节点外每个节点含有8个分支的树进行适当的目标筛选...原创 2020-03-08 14:45:57 · 438 阅读 · 0 评论 -
L2-031 深入虎穴(24分与25分的dfs)
传送门24分WA:#include <bits/stdc++.h>#define closeSync ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);#define debug(x) cout<<#x<<":"<<x<<endl;#define f(i,a,n) for(int i=a;i<n;++i)#define ff(i,a,n) for(int i=a;i<=n;++i)原创 2022-01-28 02:20:07 · 409 阅读 · 0 评论 -
Codeforces1627 C Not Assigning(dfs,思维)
传送门思路:首先,要满足单条边的权值以及相邻两条边的权值和都为质数,这一定得是一个链表,我们找到链的端点,依次赋值2,3即可刚开始tle了,后来发现是初始化耗时太长tle的初始化部分:void init(){ cin>>n; ff(i,1,n)v[i].clear(); //对vis和ans不能用clear fill(vis.begin(),vis.end(),0); fill(ans.begin(),ans.end(),0);}修改后的原创 2022-01-18 00:12:09 · 637 阅读 · 0 评论 -
牛老板(牛客练习赛87-C,搜索优化)
牛老板思路:打比赛的时候想的是dfs会超时,应该会有更好的方法,就没有去dfs,下次还是大胆一些,就算超时了,也比不写强,dfs从大到小去筛,中间对不可能优化res的情况直接剪枝就好,最后也是比较快的通过了代码:#include<bits/stdc++.h>using namespace std;typedef long long ll;#define int long longconst int N=2000007;const int inf=0x3f3f3f3f3f3f3原创 2021-08-21 15:08:03 · 257 阅读 · 3 评论 -
2020河北省程序设计竞赛—连杀(几何,搜索)
2020河北省程序设计竞赛的一道题:连杀意思就是,在平面上给出20个以内的点,问至少需要几条直线,可以把所有点覆盖思路:枚举所有点连接成的直线,然后找到所有在这条直线上的点,放入map<pair<int,int>,vector<int>> mp里,这个过程O(n3)O(n^3)O(n3),注意要用最简分数形式表示斜率(浮点形式会有精度误差),然后dfs每一种可能的连线,如果加入了这条线,就把这条线上的所有点标记vis=1,在回溯的时候用vis=0取消标记,dfs如果原创 2021-08-04 20:42:11 · 728 阅读 · 2 评论 -
双向搜索(bfs,dfs)
双向搜索的基本思路:从状态图上的起点和终点同时开始进行 广搜 或 深搜。如果发现搜索的两端相遇了,那么可以认为是获得了可行解例题:字串变换代码:#include <cstring>#include <iostream>#include <algorithm>#include <unordered_map>#include <queue>#define SI unordered_map<string, int>usi原创 2021-07-25 23:29:28 · 1924 阅读 · 1 评论 -
A*算法入门
A∗A*A∗算法的思路可看:路径规划之 A∗A*A∗ 算法Introduction to the A∗A*A∗ Algorithm提炼一下:定义起点sss,终点ttt,从起点开始的距离函数g(x)g(x)g(x) ,到终点的距离函数h1(x)h_{1}(x)h1(x) ,h2(x)h_{2}(x)h2(x),以及每个点的估价函数 f(x)=g(x)+h1(x)f(x)=g(x)+h_{1}(x)f(x)=g(x)+h1(x),其中h1(x)h_{1}(x)h1(x)是我们定义的点xxx到终点原创 2021-07-25 00:16:06 · 209 阅读 · 0 评论 -
dfs(吴楚月的表达式,Rikka with Sorting Networks)
目录吴楚月的表达式ICPC 2018徐州 I题 Rikka with Sorting Networks吴楚月的表达式思路:利用链式前向星建树,dfs该树,每遍历到一个节点,计算根节点到当前节点路径上的公式值,并纳入ans[i],i为当前节点编号。注意除法都用逆元转换成乘法(因为mod=1e9+7为素数,所以数x的逆元就是 xmod−2x^{mod-2}xmod−2),详细思路看代码吧代码:#include<bits/stdc++.h>#define debug(x) cout<原创 2021-03-07 00:14:15 · 206 阅读 · 0 评论 -
dfs(小天狼星的访问,CF - 1249-B2)
Description经过数月的准备,小天狼星,一个被诬陷的杀人犯,准备闯入霍格沃茨见见他的侄子。霍格沃茨的地图呈一颗树状分布。每个房间由若干跳过道通向其他房间。由于小天狼星想尽快找到哈利:0.他会从房间0开始找1.他总是会选择离自己最近的房间找2.如果没找到,则继续选最近的房间深入3.如果已没有房间可走,则返回到上一个房间,继续选择(往回走也算时间哦)。4.当然,除了往回走,小天狼星是不会去一个房间两次的。Input第1行,n房间个数,p哈利所在的房间。(p≤n<100)第2∼n行原创 2021-02-03 01:54:10 · 217 阅读 · 0 评论 -
Prime Path(BFS)
ac代码:#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>#include <queue>#include <cstring>#include <set>#include <map>#include <sstream>#define LL long long#define mem(f.原创 2021-01-23 13:02:23 · 149 阅读 · 0 评论 -
小X与机器人(搜索,几何)
题目描述:法1:爆搜#include<iostream>#include<queue>#include<cstring>#include<algorithm>#define pii pair<int,int>using namespace std;const int N=20;int a,b,c,d;int f[N][N],dis[N][N];int x[4]={-1,0,1,0},y[4]={0,1,0,-1};int原创 2021-01-22 00:18:00 · 515 阅读 · 0 评论 -
bfs基础题型
BFS介绍宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。其别名又叫BFS,属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。例1题目:迷宫(一)代码:#include<iostream>#include<stdio.h>#includ原创 2020-09-17 22:08:40 · 643 阅读 · 0 评论 -
梅花桩详细分析圆内贪心思路(dfs)
问题描述小明每天都要练功,练功中的重要一项是梅花桩。小明练功的梅花桩排列成 n 行 m 列,相邻两行的距离为 1,相邻两列的距离也为 1。小明站在第 1 行第 1 列上,他要走到第 n 行第 m 列上。小明已经练了一段时间,他现在可以一步移动不超过 d 的距离(直线距离)。小明想知道,在不掉下梅花桩的情况下,自己最少要多少步可以移动到目标。输入格式输入的第一行包含两个整数 n, m,分别表示梅花桩的行数和列数。第二行包含一个实数 d(最多包含一位小数),表示小明一步可以移动的距离。输出格式原创 2020-06-20 19:43:57 · 1692 阅读 · 0 评论