自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 AcWing 173. 矩阵距离(搜所)

广度优先搜索 + 多源最短路径原题链接感悟:这个题啊,其实可以转换个思路,转换成1的格子到其他0的格子的最短路径,就基本知道是多源最短路径的问题。说到多源最短路径有个大名鼎鼎的Floyd算法,不过本题不用这么麻烦,因为读懂题目可知边的权值都是1(相邻边)。可以直接用广搜,等下详细说。还有啊,今天终于报上了心心念念的老师的算法基础课,很激动,尽管自己水平不咋地,还是得加油啊!!!广搜的基本框架...

2020-04-08 20:46:23 184

原创 AcWing 172. 立体推箱子(搜索)

广度优先搜索原题链接感悟:这类题目的基本框架还是很简单的,剪枝都不用思考很多。但状态的表示是个难题,特别的麻烦,只能先总结点大概的处理思路。这题我是想不到这么好的处理方式,特别是三维数组都不是很会用,刷完搜索就去刷刷数据结构类的题吧。广搜的基本框架(bfs)题目所给的所有状态的表示开始与结束状态的储存基本四个方向的表示每走一步状态的储存int bfs(){ queue&lt...

2020-04-06 17:25:13 152

原创 AcWing 170. 加成序列(搜索)

迭代加深原题链接感悟:之前用紫书学了下迭代加深,自我感觉应该还是可以的,这次在来实践的时候才发现,除了知道大概要怎么做外,其他的全无头绪。很难受。这道题还是简单题啊!!!从这道题开始总结经验吧,还有老师讲的很好啊。题型基本框架数据的存储状态 path[ ]剪枝– 枚举对象的顺序– 判重int maxd; //限定的深度for(maxd = 1; ; maxd++) ...

2020-04-06 16:51:38 126

原创 AcWing 168. 生日蛋糕(搜索)

深度优先搜索 + 剪枝原题链接感悟:本题的小细节还挺多的,也正是利用这些题目给的小细节来增加剪枝条件的。这个题是我第一次遇到需要一些数学式子推到的题目,尽管不难,但第一次碰到也很蒙,虽然数学的学习还算可以,但应用到一些实际东西上还是无从下手,得加强加强。NOTE本题都带有pai,且题目最后不用输出,则一起全部舍去题目思路搜索对象及顺序: 深度搜,肯定是对层数下手的,然后从下往上...

2020-04-06 16:51:03 136

原创 AcWing 167. 木棒(搜索)

深度搜索 + 剪枝感悟:开始的时候自己能写一些出来,基本就写个主函数,能想到两个剪枝条件,啊,还得加倍努力啊!!!刚开始听视频讲解的时候觉得有几个剪枝条件有点鸡肋,好像没有什么用,最后在自己深度思考的时候想要弄明白到底有什么差别的时候(因为少了几个剪枝条件就会TTL)才发现很有用,原来是我的理解没到位,再看一次视频讲解发现说的真的好,证明的很到位。原题链接题目思路思路:肯定有num * ...

2020-04-06 16:50:19 129

原创 AcWing 166. 数独(搜索)

深度优先搜索原题链接优化非常重要,在这题里更是如此常见的优化技巧(本题前三种都有使用)优化搜索顺序排除冗余信息可行性剪枝最优性剪枝(这里没有)记忆化(就是动态规划了)本题思路:(剪枝很重要,不然很容易超时)优先搜索的对象与顺序:可选方案最少的位置枚举该位置可选的数字dfs搜索关键 :弄清楚代码编写时二进制与十进制的转换过程lowbit(截取二进制最低位1对应的值...

2020-04-06 16:49:40 197

原创 AcWing 165. 小猫爬山(搜索)

深度优先搜索(dfs) 体会 深度优先,就是与回溯法结合,是一种暴力的枚举,可以配合一些剪枝,减少搜索量。要考虑的问题枚举对象dfs的参数返回条件剪枝技巧原题链接枚举对象:车的数量,从1开始 。每次车的数量都需要用for枚举cat的放置情况dfs 参数:当前的cat,当前枚举的车的数量剪枝技巧:从选择最少的量开始枚举 这里可以将cat的w从大排到小...

2020-04-06 16:48:17 173

原创 AcWing 164. 可达性统计(搜索)

图的遍历原题链接本题思路建立一个图的邻接表每个链表里都储存了与之直连的点,那判断一个点的可达性,可求那些直连点自己链表里储存点的并集优化方案与技巧数组模拟邻接表,节约空间对图进行拓扑排序,即优化搜索顺序– 拓扑排序的特点是越后面的点直连的点越少,即可行方案越少bitset 利用bitset存放点,求并集bitset将数压缩为二进制形式(内部表现)的十进制(外部表现)...

2020-04-06 16:46:52 150

原创 AcWing 171. 送礼物(搜索)

深度优先 + 双向搜索双向搜索:将整个需要搜索的对象分成两半原题链接感悟:首先可能会思考动态规划,但它的时间复杂度是(nv)v太大了,不适合。n比较小,可以考虑爆搜。然后这里有个非常好的技巧,就是把原数据分成两半,在通过一些技巧,剪枝,可以有效的降低时间复杂度。本题思路先搜索前 N / 2 的数据,枚举所有可能的重量集合,存入数组对所有重量集合排序,从大到小(顺序优化),判重(排除...

2020-04-05 17:19:23 156

原创 进制转换:十六进制转八进制

开始的想法:十六转十,十转八。写的时候发现转十的时候数太大,不行。可行的思路:十六转二,二转八。可行。#include<iostream>#include<string>#include<string.h>#include<math.h>#include<vector>using namespace std;string...

2020-02-23 16:06:57 550

原创 八数码问题

判重 3种解决方法,给出两种(还一种编码解码法)1.STL 集合set<int> vis;void init_lookup_table() { vis.clear(); }int try_to_insert(int s) {//判重 int v = 0; for(int i = 0; i < 9; i++) v = v * 10 + st[s][i]; ...

2020-02-08 19:28:57 151

原创 UVa 140 Bandwidth 带宽

“剪枝” --本题的优化方案可以记录下目前已经找到的最小带宽k。如果发现已经有某两个结点的距离大于或等于k,再怎么扩展也不可能比当前解更优,应当强制把它“剪”掉,就像园丁在花园里为树修剪枝叶一样,也可以为解答树“剪枝(prune)”。除此之外,还可以剪掉更多的枝叶。如果在搜索到结点u时,u结点还有m个相邻点没有确定位置,那么对于结点u来说,最理想的情况就是这m个结点紧跟在u后面,这样的结点带...

2020-02-07 19:37:07 132

原创 UVa 129 Krypton Factor 困难的串

回溯法练习 一个很好地成对检查#include<cstdio>using namespace std;int n,L,cnt,A[85];int dfs(int cur){ if(cnt++ == n) { for(int i = 0; i < cur; i++) { if(i % 64 == 0 && i > 0) pr...

2020-02-07 18:23:56 79

原创 UVa524 Prime Ring Problem (回溯法练习)

UVa524 Prime Ring Problem (回溯法练习)一些训练时候的小心得,记录记录。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int is_prime(int x) { //这个判断素数的函数很好有意思 for(int i =...

2020-02-07 16:48:34 84

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除