纯纯的搜索

本文探讨了如何利用图论算法解决球队‘食物链’问题,找到字典序最小的环。接着,通过分析J-WelcomeParty问题,提出使用BFS和优先队列寻找最小不快乐人数及其顺序。同时,针对E-Equation题目,展示了在限制搜索空间的情况下如何高效构建不同数字组合的方程式。这些问题的解决都涉及到深度优先搜索、剪枝策略以及序列合并的优化技巧。
摘要由CSDN通过智能技术生成

简单

球队“食物链”

传送门
题意:给定一张图,求一个字典序最小的环
做法:pta的题一般都是先dfs爆搜,然后再剪枝,因为时环,所以字典序最小的一定是从 1 号点出发,所以dfs只搜 1 号点。这题剪枝比较讲究,在dfs的过程中,对于每一种还未搜到底的方案,在还未标记的点上查找是否有能回到 1 的点,如果没有,直接剪枝。

中等

J - Welcome Party

传送门
题意:n 个人,m 对关系,每队关系代表 x 和 y 是关系,但是关系不具有传递性,这 n 个人需要进入一个派对,如一个人进入派对时派对里已经有他的朋友了,那么他是快乐的,如果没有一个他的朋友,那么他是不快乐的,问最少的不快乐的人数以及他们所有人进入派对的顺序(最小字典序)
做法:从全局看,每个连通块至少肯定有一个人是不开心的,每个连通块都可以提供一个不开心的人,这个不开心的人第一个进派对,因为答案要求的字典序最小,所以这个不开心肯定是连通块中编号最小的
从连通块来看,一个连通块想要进入派对的字典序最小,可以用 bfs + 优先队列来实现,bfs实现一层层搜索,优先队列保证每次队头元素是最小的点,这样根据出队的顺序可以得到一个该连通块字典序最小的进入派对的序列。
假设有 k 个连通块,我们将得到 k 个序列,需要将这 k 个序列合并成一个序列,直接用归并排序的合并数组方法合并这些序列即可

E - Equation

传送门
题意:给定 9 数字,分别是 1 ~ 9 的数量,让你拿数字构成式子:x + y = z,其中 x, y, z 全是个位数,问有几种不同的式子。
做法:首先预处理一下,发现如果所有数量都无穷大,最多只能得到 36 种不同的式子,如果直接搜索是 2 36 2^{36} 236,肯定会超时,所以要考虑剪枝,每次下搜都更新答案 ans,搜的同时剪枝:如果当前搜到第 x 个,按照当前搜索方案和位置得出的答案是 res,那么剩余搜索数量是 36 - x,如果剩余搜索数量 36 - x + 当前得出的答案 res <= ans,那么没必要往下搜了

较难

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值