随笔分类 -  深度优先搜索

摘要:这道题的思路很明显就是搜索。 考虑每次切割只有两种大的情况:平行长边或平行短边。 不妨设平行长边,则切割的长度即为mx的公倍数(mx等于长边长度除以还需分割的数量)。 那么就是一个比较容易实现的搜索题。 #include<iostream> #include<cstdio> #include<cst 阅读全文
posted @ 2020-09-10 19:00 handsome_zyc 阅读(266) 评论(0) 推荐(0) 编辑
摘要:这道题是一个错题,但是我还是做了。 一开始我想的是一个贪心的做法,但是如果树含有一条很长的链就会hack掉这种做法,而数据范围并不大,所以就老老实实地写搜索。 大体上是先搜索一遍整棵树,处理处每个点的父亲节点编号,子树大小和所在深度。 然后需要把相同深度的点归到一起,因为对于每次搜索,可选择的都是同 阅读全文
posted @ 2020-09-10 17:09 handsome_zyc 阅读(156) 评论(0) 推荐(0) 编辑
摘要:u1s1,我的代码在洛谷上只能拿88pts,但在其他OJ上能过,所以如果你想在洛谷上通过这道题那请出门左转。 这道题看题面和数据范围就知道是搜索加一些神奇的剪枝。 我一开始的想法是按人枚举,但发现这样连裸的搜索都很难写,所以我转化了一下思路,枚举比赛(即用 ( x , y ) 来表示比赛双方)。 这 阅读全文
posted @ 2020-09-06 22:01 handsome_zyc 阅读(145) 评论(0) 推荐(0) 编辑
摘要:这道题经常是作为一个搜索题出现的,但是实际上它还用dp或贪心处理搜索后的结果。 来看这道题,题意很好理解,第一问也很好做(从每个第一行的点开始搜,判断整个第一行在第N行上覆盖的点数量是否等于M就好了) 然而,想到这里还不足以解决第二问。 想要解决第二问首先需要明确一个引理:第一行某个点在第N行上覆盖 阅读全文
posted @ 2020-09-04 22:23 handsome_zyc 阅读(289) 评论(2) 推荐(0) 编辑
摘要:这道题根据题意可以理解为在图中找一个最小环的问题 又因为题目中一条重要的性质:每个点出度都为1,所以我想到了一个删边的做法。 详细来讲就是递归删去除环以外的边(即原本或更新后入度为1的边),剩下一个个独立无交集的环,再遍历一遍就能找出答案。 注:每个点在删边和搜环时只会遍历一遍,所以程序并不会超时。 阅读全文
posted @ 2020-09-04 21:17 handsome_zyc 阅读(221) 评论(0) 推荐(0) 编辑
摘要:时隔多日,我经历完中考又回来了! 刚刚步入高中生活,又要抽出一部分时间来打信竞,实在是压力山大。 但是,我相信经过竞赛对我的磨砺一定对我的未来大有用处。 所以话不多说,来看今天这道做过很多遍的经典考题。 这道题最主要的目的是判断上下表面的连通性,所以,对于每一个球(可以看作是点)我们只需要关注能否从 阅读全文
posted @ 2020-09-04 21:11 handsome_zyc 阅读(184) 评论(0) 推荐(0) 编辑
摘要:每日一题 day64 打卡 Analysis 这道题一看应该是搜索,因为方阵是 5 × 5 固定的。 显然,枚举方阵每一位比直接枚举每一行要好很多,但还是要剪枝。 剪枝一: 因为我们知道 (1,1) 且每一位上数的和,所以我们可以确定出一个不必枚举 25 次之多的枚举方案。 下面是我枚 阅读全文
posted @ 2020-01-02 17:55 handsome_zyc 阅读(404) 评论(0) 推荐(0) 编辑
摘要:每日一题 day58 打卡 Analysis 这道题搜索的想法非常巧妙,从两端向中间找,这样可以保证仅仅对于head或tail而言,需要用到的前缀和与后缀和是单调递增的,这样排个序就解决了。 值得一提的是,在搜索时开两个变量记录前缀与后缀和,以便计算。 1 #include<iostream> 2 阅读全文
posted @ 2019-12-12 18:34 handsome_zyc 阅读(336) 评论(0) 推荐(0) 编辑
摘要:每日一题 day54 打卡 Analysis 一,管理员已经在题目中告诉你输入时去掉长度大于50的木棍。 二,想好搜索什么。很明显我们要枚举把哪些棍子拼接成原来的长棍,而原始长度(原来的长棍的长度)都相等,因此我们可以在dfs外围枚举拼接后的每根长棍的长度。那枚举什么范围呢? 其长度至少是最长的一根 阅读全文
posted @ 2019-12-04 18:03 handsome_zyc 阅读(548) 评论(0) 推荐(0) 编辑
摘要:每日一题 day53 打卡 Analysis 观察一个蛋糕的俯视图,上表面的面积其实就是最下面那一层的底面积,所以在第一次搜索的时候加入这个底面积,之后就只用考虑侧面积就好啦. 就是每次枚举r和h,如何选取上下界呢? 将上一层的高度记作lh,上一层的半径记作lr,则上界很好判断,就是lh−1和lr− 阅读全文
posted @ 2019-12-02 17:57 handsome_zyc 阅读(248) 评论(0) 推荐(0) 编辑
摘要:每日一题 day52 打卡 Analysis 这道题直接搜索会TLE到**,但我们发现有很多没有用的状态可以删去,比如 1,1,5; 1,5,1; 5,1,1; 所以很容易想到一个优化:按不下降的顺序枚举划分出来的每个数。 然而还是会TLE... 再来想一个事情:n=7,k=4 已经枚举了 1,2, 阅读全文
posted @ 2019-11-30 11:11 handsome_zyc 阅读(199) 评论(0) 推荐(0) 编辑
摘要:每日一题 day5 打卡 Analysis 裸搜就好了的一道水题 请各位大佬斧正(反正我不认识斧正是什么意思) 阅读全文
posted @ 2019-08-30 21:58 handsome_zyc 阅读(287) 评论(0) 推荐(0) 编辑
摘要:每日一题 day5 打卡 Analysis 深搜+剪枝+瞎jb判断 1.越界 2.这个点无色 3.当前的价值已经比答案大 三种情况要剪枝 我搜索里判断要不要施法的时候没判断上一次有没有施法,白调了0.5h,呵呵~~~ 请各位大佬斧正(反正我不认识斧正是什么意思) 阅读全文
posted @ 2019-08-16 17:46 handsome_zyc 阅读(263) 评论(0) 推荐(0) 编辑
摘要:Analysis 这道题是搜索,类似于小木棍,加一些剪枝。 第一个剪枝是如果当前的答案已经大于了我们已知的最小答案,不用说直接return返回即可。 第二个剪枝是我们可以将小猫的体重从大到小排序,这样我们的搜索树就会缩短许多。 阅读全文
posted @ 2019-07-30 13:23 handsome_zyc 阅读(333) 评论(0) 推荐(0) 编辑
摘要:深搜,只不过是三维的。 阅读全文
posted @ 2019-07-24 13:30 handsome_zyc 阅读(241) 评论(0) 推荐(0) 编辑
摘要:深搜,向四个方向,在不越界的情况下一直闷头走,直到撞墙。到达终点就输出,没到就回溯。 阅读全文
posted @ 2019-07-24 13:28 handsome_zyc 阅读(177) 评论(0) 推荐(0) 编辑
摘要:思路 dfs(只不过要用邻接表存)邻接表是由表头结点和表结点两部分组成,其中表头结点存储图的各顶点,表结点用单向链表存储表头结点所对应顶点的相邻顶点(也就是表示了图的边)。在有向图里表示表头结点指向其它结点(a->b),无向图则表示与表头结点相邻的所有结点(a—b) 阅读全文
posted @ 2019-07-24 13:24 handsome_zyc 阅读(250) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示