qbzt培训之枚举与搜索
枚举即可
搜索
dfs
NOIP骗分大法
\(Dfs\)判环:
跑够1s直接输出有环
当遍历到一个在栈里的点时,证明有环。
经典题:
经典题*2:
枚举每层高度,半径
剪枝1:剩下的体积维的最小侧面积+已搜的面积比已搜到的最优解大
\(v=\pi r^2 h,S=2\pi r h\),最大半径是当前的半径-1,可以算出来\(h,S\)
剪枝2:如果剩下的所有层都使半径最大,当前的\(h\)达到最大,剩下层的\(h\)都是1(即使体积最大化)都无法加出\(v_总\),剪枝
体积最小化都会总体积比\(v_总\)大,剪枝
bfs
就是一圈一圈的搜
广搜求单源最短路(图中边权为1)
直接搜
若边权为0或1
1.用双端队列,保证队列前半段的\(dis\)为\(a\),后半段的\(dis\)为\(a+1\)
2.在无向图中,使用并查集将0边相连的点连在一起
记忆化搜索
把搜到的东西记下来,当下一次用到的时候直接使用。
与\(dp\)相比,可以自己找到拓扑序。但是常数会大。在不确定\(dp\)顺序的时候,可以用记忆化搜索