[搜索]一些搜索的干货
作者:互联网
今天老师讲了一些搜索,特此简要记录:
搜索能干什么?
主要有三种:
1. 最优解
2. 解数量
3. 解方案
值得注意的是,除了代价为1且为最优解问题才能用BFS,其余全部用DFS。
一般来说,求最优解的问题最为常见。
关于优化
剪枝
主要也有三种:
1. 可行性剪枝
2. 最优性剪枝
3. 对称性剪枝
详细介绍略回来再补上。
改变搜索顺序
sort+最优性剪枝棒棒哒!
卡时
这是一个很神奇的东西,可以将代码的得分率大大提升。
众所周知,程序时间长了就会TLE,而TLE是一分不得的。于是我们有了一个神奇的玄学思想:
只要在程序大约运行900ms的时候停止搜索,输出当前答案,就能有概率得到分!
奇怪的骗分技巧增加了!
那怎么实现呢?
首先,我们引入头文件#include<ctime>
,然后就可以进行一波神奇的操作:
if (clock() * 1000 >= 900 * CLOCKS_PER_SEC) //时间快要到了,要准备收拾后事了
{
输出当前答案;
exit(0); //直接退出程序,就像突然猝死
}
这个办法在之前的NOIP有过实战,当时直接把35分->90分。TQL!
值得注意的是,要留出给程序退出的时间,一般卡时可以设到900ms~950ms。
有了这些技巧,就可以愉快的去做搜索题了~这里放几道传送门:
k皇后
八数码难题
九数码问题(其实跟八数码几乎一模一样)
一个可以用各种玄学搜索的题
CSP能出现的最难搜索题
遗憾的是,这些题笔者都没有A掉
标签:剪枝,最优性,程序,干货,数码,搜索,一些,最优 来源: https://www.cnblogs.com/w-rb/p/13759406.html