首页 > 其他分享 >打了一整天の搜索 总结帖

打了一整天の搜索 总结帖

时间:2023-10-01 17:24:16浏览次数:35  
标签:总结 迭代 dep 最优性 算法 搜索 一整天 优化

观前提示:本帖会更新,但也会咕咕咕,有问题记得踢我一脚
前言:

今天集训了一天,全是搜索题,收(sheng)获(xin)颇(ju)丰(pi),真是美好的一天呢(笑)

好了,现在正式进入我们的总结帖

Part 1 搜索优化

提起搜索优化,很多人其实不屑一顾。但是相比各种难度容易上天的算法,搜索的优化其实是非常简单,易学,高效的一种快速提高暴力成绩的方法。
其中优化又大致分三类:

一.可行性优化与最优性优化(统称剪枝)

其中顾名思义,可行性优化要求你在可以判断这条道路行不通时快速回溯,以达到剪枝的目的。
而最优性优化则是要求你在答案已经劣于最优答案时快速回溯,因为这个时候你已经不可能用这个方案去更新答案了。
这两个优化放在一起是因为他们经常放在一起写。写法上两者有一些小小的不同:最优性优化要求最优的\(ans\)应该最好是一个被实时更新的全局变量,可行性优化要求对题目的性质有深刻把握。

二.搜索顺序优化

这个相比之下比较少用,但是又非常实用,可以大大减小你做无用功的行为。比如在做匹配的时候,我们可以先从大的开始匹配,然后再匹配小的,防止小的过多导致层数过多,出现TLE或者MLE甚至爆栈的现象。这个东西很多时候不被人想到,但一旦想到效率会成倍增长。

三.排除等效冗余

我们可以给方案人为的按上一些要求来使可能被计数方案数在不影响正确性的前提下
(这个是大前提,你大概率不会TLE所有的点,但是一旦答案错误将有可能0分)
变得尽量的少,常用的比如规定一个方案里面的不增/不减顺序,或者将本质相同的东西只搜索一遍等
什么?记忆化当然是一种优化方式,但是要看好能不能记忆化哦

练习题库:自行搜索,都有
数的划分
小木棍(搜索里的毒瘤题,卡常,最后一个点过不了就过不了,不要死磕)
索道

Part2 其他特殊搜索

迭代加深算法

迭代加深算法其实就是一种非常暴力智慧的办法。
我们知道dfs每向下搜一次复杂度是非常高的,而相比之下把之前搜过的东西再搜一遍其实是很快的。
而真正的bfs虽然比迭代加深快,但是空间复杂度使我们难以忍受的。
将两者结合起来,我们就得到了迭代加深算法。
我们规定一个 \(dep\) 作为最大深度,并且将 \(dep\) 一次次增大。而当\(dfs\)的深度大于\(dep\)时,我们会直接回溯。
关于为什么这样能过,我也不知道,背就对了
例题:四子连棋(自行搜索)

双向bfs

先咕咕咕,记得踢我。

其他实战题目

上一个都咕咕咕了这个你还想让我写?

标签:总结,迭代,dep,最优性,算法,搜索,一整天,优化
From: https://www.cnblogs.com/wwzzhhone/p/sousuo.html

相关文章

  • 搜索剪枝
    虽然我很懒,但集训期间还是强迫我自己写一下博客吧!搜索剪枝不搜不知道,我的搜索如同一坨shift。搜索没逻辑,剪枝随便捡,然后喜提withreturnvalue3221225725P1025数的划分非常简单的一道,数的拆分题题目描述将整数\(n\)分成\(k\)份,且每份不能为空,任意两个方案不相同(不......
  • Fastapi 框架知识点总结
    【一】引入为什么Fastapi火【二】Starlette,Pydantic与FastAPI框架是什么关系?Starlette介绍Pydantic介绍三者之间的联系【三】Pydantic使用方法介绍类模型的定义及使用递归模型ORM操作【四】Fastapi环境搭建及初步使用Fastapi环境搭建注意不同版本的包......
  • 33. 搜索旋转排序数组
    整数数组nums按升序排列,数组中的值互不相同。在传递给函数之前,nums在预先未知的某个下标k(0<=k<nums.length)上进行了旋转,使数组变为[nums[k],nums[k+1],...,nums[n-1],nums[0],nums[1],...,nums[k-1]](下标从0开始计数)。例如,[0,1,2,4,5,6,7]在下标3处经......
  • 20211105李宜时《信息安全系统设计与实现》第四周学习总结
    第七第八章学习笔记学习笔记:文件操作和系统调用文件操作级别文件操作通常可以分为三个级别:低级别文件操作:直接访问文件的二进制数据,通常由操作系统提供支持。文件I/O操作:使用高级别的API(如C的stdio库)来读取和写入文件。文件系统操作:使用文件系统调用访问和管理文件,如POSIX......
  • 一周总结(2023.9.25-2023.10.1)
    听课方面周一听了Nit的分块和莫队,前面还比较可以跟得上,后面基本掉线,写了个回滚莫队板子,口胡了前面几道题。后面就去做课件了。讲课之后补了自己的一些题,但是前面的题还比较多,需要快速补题。讲课方面在ddl之前eps秒做完了课件。还是要加速。讲课的时间还有剩余,下次要准备......
  • 2023-2024-1 20231414《计算机基础与程序设计》第一周学习总结
    学期(2023-2024-1)学号(20231414)《计算机基础与程序设计》第一周学习总结作业信息这个作业属于哪个课程(2023-2024-1-计算机基础与程序设计)这个作业要求在哪里(2023-2024-1计算机基础与程序设计第一周作业)这个作业的目标<计算机基础与程序设计中的问题提问>作业......
  • 2023-2024-1 20231419 《计算机基础与程序设计》第一周学习总结
    2023-2024-120231419《计算机基础与程序设计》第一周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2023-2024-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK01这个作业的目标快速浏览一遍教材,并......
  • 9.25-10.1 总结
    模拟赛模拟赛挂大分。模拟赛部分见“联考经验与教训”。做题补了约15道zhicheng的DS。......
  • uniapp项目实践总结(二十五)苹果 ios 平台 APP 打包教程
    导语:当你的应用程序开发完成后,在上架ios应用商店之前,需要进行打包操作,下面就简单介绍一下打包方法。目录准备工作注册账号生成证书打包配置准备工作在打包之前,请保证你的uniapp应用程序编译到ios模拟器或者是真机调试基座环境下是可以正常运行的,苹果打包的过程比......
  • 2023-2024-1 学号20231318《计算机基础与程序设计》第一周学习总结
    作业信息作业链接这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业的要求在哪里2023-202341计算机基础与程序设计第一周作业这个作业的目标作业正文2023-2024-1学号20231318《计算机基础与程序设计》第一周学习总结教材学习内容总结快......