随笔分类 -  搜索

摘要:【分析】 暴力搜顺子,贪心出散牌 为什么顺子要暴力? 玩过斗地主的都知道,并不是出越长的顺子越好,如果你有一组手牌, ,你一下把最长的出了去,你会单两张牌,不如出两个顺子,所以顺子要暴力。 贪心打散牌 这是核心所在,也是不超时的原因。 可以先统计一下不同牌个数的组数,然后再出牌, 那如何打出最优解? 阅读全文
posted @ 2019-07-06 20:40 hulean 阅读(295) 评论(0) 推荐(0)
摘要:【思路】 题目给出一棵树。第$i$步拆的一定是第$i$层与第$i+1$层之间的连边,否则不是最优(自行证明即可),所以可以暴力枚举每一次拆哪一个节点与上一个节点的连边。 把所有节点所在的层数存下来,一号点在第$1$层,枚举每一层的每个节点(由于$1$号节点已经被感染,从第二层开始搜索就可以了) 大概 阅读全文
posted @ 2019-07-06 20:39 hulean 阅读(626) 评论(0) 推荐(0)
摘要:看见很多dalao写了什么双向BFS,蒟蒻表示不会写啊。 怎么办办? 先来分析一下题目,一眼看去就是一个搜索题,考虑DFS与BFS。 先放一份DFS的代码: cpp include using namespace std; bool a[5][5],b[5][5]; char c; int dx[5 阅读全文
posted @ 2019-06-20 09:30 hulean 阅读(402) 评论(0) 推荐(0)
摘要:搜索 传参 开始搜索 初始参数 完整代码: cpp include using namespace std; int n,c; int w[60],m[60]; int tot,ans=0x3f3f3f3f; inline int read() { int tot=0; char c=getchar 阅读全文
posted @ 2019-05-08 11:01 hulean 阅读(229) 评论(0) 推荐(0)
摘要:看到这题,一下就想到了爆搜。(不过这题输入也是够坑的) 单纯的搜索肯定是会超时的,所以这里需要考虑一些剪枝。 我们令 为在第i行j列时,方向为k的最小镜子数,若当时的镜子数已大于或等于此记录,那么就不必要更新了 否则往该点的四个方向进行更新: 方向相同 没必要放镜子了 方向相反 不存在这种可能,忽略 阅读全文
posted @ 2019-05-02 08:20 hulean 阅读(258) 评论(0) 推荐(0)
摘要:本题算法:贪心+排序+搜索+并查集+图论 输入中的t可以不用管,毕竟这只是特殊情况的标志 题目中虽然没有很明确地说明这是一棵树,但是题目中说有n个点,但是只有n 1条边,想用这n 1条边把整个图连通起来,那么只有可能是棵树。(不信可以自己画画看) 竟然是一棵树了,那么就可以用找到每个节点唯一的父亲、 阅读全文
posted @ 2019-05-01 10:17 hulean 阅读(171) 评论(0) 推荐(0)
摘要:思路:DFS+剪枝 本题可以用一个字符二维数组来存整个地图,然后在往四个方向进行搜索。 注意:当走到家门前要先判断血量! ~~(本人就被坑了)~~ 代码: cpp include using namespace std; const int N=110; int n,m; int Begin_x,B 阅读全文
posted @ 2019-05-01 10:16 hulean 阅读(648) 评论(0) 推荐(0)
摘要:"题目传送门" 这题就是一个有技巧的DFS+一大堆乱七八糟的剪枝 进行DFS时注意一下以下点 根据题意,我们可以把DFS分成两块,即 与``n m/2 n m``,第一块边找边记录,第二块就开始计算 其实左上角与右上角开始没有任何区别 剪枝 1. 可行性剪枝:判断上下与左右走过没有 2. 最优性剪枝 阅读全文
posted @ 2018-12-18 15:25 hulean 阅读(311) 评论(0) 推荐(0)