
搜索
dfs,bfs相关
谁是凶手1703
这个作者很懒,什么都没留下…
展开
-
acwing蓝桥杯【递归与递推】
带分数题意简单dfs枚举全1-9的全排列,for循环出a,b,c,判断结果,是的话res++#pragma comment(linker, "/STACK:1024000000,1024000000")#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<string>#include<vector>#in原创 2020-09-23 21:12:46 · 284 阅读 · 0 评论 -
树形DP总结【acwing提高课】
树的最长路径思路基本想法就是dfs求出子树的最大高度基于这个求出最大高度、次大高度代码#include<bits/stdc++.h>using namespace std;const int N=2e4+100;int h[N],ne[N],w[N],e[N],idx;void add(int a,int b,int c){ e[idx]=b; ne[idx]=h[a]; w[idx]=c; h[a]=idx++;}int n,m;int原创 2020-08-23 17:12:02 · 417 阅读 · 0 评论 -
棋盘 【计蒜客】【dfs】【bfs】
dfs 记忆化搜索#include <iostream>#include <string.h>#include <algorithm>#include <queue>using namespace std;const int N=110;int n,m;int dis[N][N],g[N][N];int dx[4]={-1,0,...原创 2020-03-29 21:57:18 · 227 阅读 · 2 评论 -
树的遍历【后根+中根】
#include<iostream>#include <algorithm>#include <cmath>#include <queue>using namespace std;const int N=1e5;int b[N],a[N];struct node{ int w,l,r;}tr[N];int n;int cnt;...原创 2020-03-24 13:36:40 · 268 阅读 · 0 评论 -
字串变换
#include<bits/stdc++.h>using namespace std;const int N=200;string a[N],b[N];string _state,_end;int n;map<string,int>mp1,mp2;int main(){ cin>>_state>>_end; whil...原创 2020-03-13 17:25:28 · 133 阅读 · 0 评论 -
一维跳棋【计蒜客】
#include<iostream>#include<vector>#include<unordered_map>#include<string>#include<algorithm>#include<queue>using namespace std;int N;unordered_map<strin...原创 2020-03-12 15:40:11 · 700 阅读 · 0 评论 -
不经过重复点的最短路【迷阵突围】
题意思路跑最短路,记录前驱把最短的边删去一条,比较次短路记得初使化!!!!!多次用到st数组#include<iostream>#include<algorithm>#include<string.h>#include<cmath>using namespace std;typedef pair<int,int>...原创 2020-02-17 23:12:24 · 654 阅读 · 0 评论 -
最小支配集【皇宫看守】
皇宫看守 最小支配集链接:链接题意给一颗树,最小支配集思路和没有上司的舞会有区别,没有上司的舞会是一条边相邻的俩个点至少选一个点属于最小点覆盖最小点覆盖需要考虑 父节点,子节点,本身节点的状态f[u][0] 表示u节点被父节点的看到的最小花费f[u][1] 表示u节点被子节点看到的最小花费f[u][2] 表示u节点自己被放置的最小花费f[u][0] += sigma m...原创 2020-01-31 23:27:42 · 185 阅读 · 0 评论 -
没有上司的舞会+战略游戏【树形dp】
没有上司的舞会链接:链接题意:一颗树,点上有权值,一条边最多选一个点,求最大权重代码#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 6010;int n;int h[N], e[N], ne[N], ...原创 2020-01-31 17:47:58 · 156 阅读 · 0 评论 -
苹果二叉树 有依赖的分组背包
苹果二叉树 分组背包链接思路有依赖性的分组背包树形dpf[u][j] 根节点是u,边是j的最大值分组背包:枚举组,枚举体积,枚举决策代码#include<iostream>#include<string.h>#include<algorithm>using namespace std;const int N=2e5;int e[N]...原创 2020-01-31 15:59:58 · 192 阅读 · 0 评论 -
数字转换 树的最长链
数字转换 树的最长链链接:https://www.acwing.com/activity/content/problem/content/1304/1/题意:如果一个数 x 的约数之和 y(不包括他本身)比他本身小,那么 x 可以变成 y,y 也可以变成 x。例如,4 可以变为 3,1 可以变为 7。限定所有数字变换在不超过 n 的正整数范围内进行,求不断进行数字变换且不出现重复数字的最...原创 2020-01-31 14:30:03 · 395 阅读 · 0 评论 -
树的中心
树的中心题意找到一个点使最远的点最小思路画出一颗树,找到一个点,这个点的最远距离,有俩种,一种是往下走,另外一种是往上走,往上走还有俩种,一种是再往上走另外一种是往下走,因此,我们需要,dfs出每个点到叶子节点的最大值,再dfs出每个点往上走的最大值代码#include<iostream>#include<string.h>#include<...原创 2020-01-30 23:03:32 · 266 阅读 · 0 评论 -
最短路+dfs【新年好】
题目链接题目大意:给一个图 求其中6个点的全排列 哪种路最短先预处理6个点到其他点的最短路然后 dfs枚举排列 求最小值#include<bits/stdc++.h>using namespace std ;const int N=1e6;int dis[6][N],st[N];int n,m,sorce[6];int h[N],ne[N],e[N],w[N],i...原创 2020-01-20 21:01:50 · 187 阅读 · 0 评论 -
导弹防御系统【dfs+贪心】
题意 问最少有多少个上升子序列 和下降子序列 可以覆盖一个序列#include<bits/stdc++.h>using namespace std;const int N=100;int a[N],up[N],down[N];int n;bool dfs(int depth,int u,int su,int sd){ if(su+sd>depth) re...原创 2019-10-30 23:11:55 · 302 阅读 · 0 评论 -
poj 2286 【IDA*算法】【迭代加深】
添加链接描述估计函数: 8-(出现次数最多的数)迭代加深+IDA*#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std; #define MAXN 7#define MAXM...原创 2019-09-19 09:00:54 · 171 阅读 · 0 评论 -
poj 3460【IDA*算法】【迭代加深】
题目传送门迭代加深+估计函数估计函数:每次操作都能把3个错误点改正,消除所有错误点操作次数为tot/3 上取整 = (tot+2)/ 3;#include<iostream>using namespace std;const int N=16;int n,q[N];int w[6][N];int f(){ int res=0;...原创 2019-09-17 23:11:21 · 247 阅读 · 0 评论 -
噩梦【HDOJ】【双向bfs】
题目传送门双向bfs#include <cstring>#include <iostream>#include <algorithm>#include <queue>using namespace std;typedef pair<int, int> PII;const int N = ...原创 2019-09-08 16:18:15 · 189 阅读 · 0 评论 -
加成序列【dfs】【迭代加深】
题目传送门题意:搜索出一个符合要求的最短序列优化搜索顺序,从大到下枚举;排除等效情况 设置标记数组#include<iostream>using namespace std;int n;const int N=150;int path[N];int depth;bool dfs(int u){ if(u-1==depth) ...原创 2019-09-06 16:12:10 · 218 阅读 · 0 评论 -
第k短路【bfs】【a_star算法】
题目传送门暴力朴素做法:暴力宽搜,每次取队头,把每次出边加入队,每个点第几次出队就是第几短路用a_star算法优化:#include<iostream>#include<algorithm>#include<queue>#include<vector>#include<string.h>using namespace...原创 2019-09-03 10:44:16 · 201 阅读 · 0 评论 -
巡逻【树的直径】【树形dp】【bfs】
题目传送门在最初的树上,求出树的直径L1 然后将这条路径上的所有边权统统取反.1变成−1我们再求一次树的直径L2L2.答案就是2×(n−1)−(L1−1)−(L2−1)=2×(n−1)−L1+1−L2+1假如说L2L2和L1L1有重叠部分.那么当我们−L1+1的时候,我们就会发现,重叠的部分变成了只需要经过一次.然后−L2+1−L2+1相当于把重叠部分相加回来了....原创 2019-08-31 08:51:06 · 122 阅读 · 0 评论 -
分形【递归】【绘图】
题目传送门递归画画#include<iostream>using namespace std;const int N=1e4;char g[N][N];void dfs(int n){ if(n==1) { g[1][1]='X'; return; } dfs(n-1); int len=1; ...原创 2019-08-29 15:56:32 · 199 阅读 · 0 评论 -
送礼物【双向dfs】
https://www.acwing.com/problem/content/173/思路:dfs 先把a数组排序,由大变小 dfs出前n/2+2 可以凑出的数,放到数组s中 把s数组去重排序,行成一个单调递增序列 再dfs剩下的数 可以组成的数,每组成一个,二分找s数组匹配的最大值#include<iostream>#include<algorithm&...原创 2019-08-10 19:37:53 · 208 阅读 · 0 评论 -
加成序列【迭代加深】
满足如下条件的序列X(序列中元素被标号为1、2、3…m)被称为“加成序列”:1、X[1]=12、X[m]=n3、X[1]<X[2]<…<X[m-1]<X[m]4、对于每个 k(2≤k≤m)都存在两个整数 i 和 j (1≤i,j≤k−1,i 和 j 可相等),使得X[k]=X[i]+X[j]。你的任务是:给定一个整数n,找出符合上述条件的长度m最小的“加成序列”。...原创 2019-08-10 15:22:15 · 324 阅读 · 0 评论 -
数独【dfs】
数独是一种传统益智游戏,你需要把一个9 × 9的数独补充完整,使得图中每行、每列、每个3 × 3的九宫格内数字1~9均恰好出现一次。请编写一个程序填写数独。数独.png输入格式输入包含多组测试用例。每个测试用例占一行,包含81个字符,代表数独的81个格内数据(顺序总体由上到下,同行由左到右)。每个字符都是一个数字(1-9)或一个”.”(表示尚未填充)。您可以假设输入中的每个谜题都只有...原创 2019-08-10 11:09:47 · 322 阅读 · 0 评论 -
小猫爬山【dfs】
https://www.acwing.com/problem/content/167/思路:dfs搜索 因为 每个猫进入车厢的状态有限dfs需要维护 正在放第几个猫,现在已经放了几个车厢;用for询环遍历已经放置的车厢,找到合适的放进去·,找不到放新车厢。剪枝方案:优先考虑决策数少的。最优性剪枝。#include<iostream>#include<algorithm...原创 2019-08-09 22:58:34 · 136 阅读 · 0 评论