CSP2019突击训练(搜索专题)

专题一 简单搜索
POJ 1321 棋盘问题
POJ 2251 Dungeon Master
POJ 3278 Catch That Cow
POJ 3279 Fliptile
POJ 1426 Find The Multiple
POJ 3126 Prime Path
POJ 3087 Shuffle‘m Up
POJ 3414 Pots
FZU 2150 Fire Game
UVA 11624 Fire!
POJ 3984 迷宫问题
HDU 1241 Oil Deposits
HDU 1495 非常可乐
HDU 2612 Find a way

专题二 搜索进阶
HDU 1043 Eight
HDU 3567 Eight II
HDU 2181 哈密顿绕行世界问题
HDU 3533 Escape
HDU 1560 DNA sequence
ZOJ 2477 Magic Cube
HDU 3085 Nightmare Ⅱ
HDU 1067 Gap
HDU 2102 A计划
HDU 3001 Travelling
专题三 Dancing Links
HUST 1017 Exact cover
ZOJ 3209 Treasure Map
HDU 2295 Radar
FZU 1686 神龙的难题
POJ 1084 Square Destroyer
POJ 3074 Sudoku
ZOJ 3122 Sudoku
HDU 4069 Squiggly Sudoku
HDU 3335 Divisibility
HDU 4979 A simple math problem.
HDU 5046 Airport

原文地址:https://www.cnblogs.com/Aqin-7/p/11745777.html

时间: 2024-10-01 17:53:14

CSP2019突击训练(搜索专题)的相关文章

搜索专题小结及例题:POJ2251&POJ1426&POJ3087&POJ2488

图的遍历也称为搜索,就是从图中某个顶点出发,沿着一些边遍历图中所有的顶点,且每个顶点仅被访问一次,遍历可采取两种不同的方式:深度优先搜索(DFS)和广度优先搜索(BFS). 1.DFS算法思想` 从顶点v出发深度遍历图G的算法 ① 访问v0顶点,置vis[v0]=1,搜索v0未被访问的邻接点w,若存在邻接点w,则dfs(w),直到到达所有邻接点都被访问过的顶点u为止,接着退回一步,看是否还有其他没有被访问的邻接点.如果有,则访问此顶点,进行前述类似的访问,如果没有,就在退回一步进行搜索,重复上述

搜索专题总结

搜索专题总结 第七章的例题做得差不多了,还有一道枚举二叉树和一道比较难的搜方块的没过,另外有一道火柴的用IDA*水过,并没有过大数据,由于这道可以用dancing links过,所以留着dancing links一坑.接下来总结下这章的收获,首先最重要的当然是不需要判重的高效率的IDA*以及估价函数的设计技巧:然后是bfs+hash写得更熟练了,如果hash需要erase那么就只能用指针版的,但是效率会很慢,否则就用数组版的. 做搜索题的几个要点: 1,估算最坏复杂度. 2,寻找合适的剪枝策略,

搜索专题

搜索专题 标签(空格分隔): ACM专题小结 搜索专题主要就是围绕dfs()和bfs(). 这两个函数其实不难,搜索可以解决很多最小路径,最少次数问题bfs()等问题 维数从一维到三维:主要抓住移动的方向的控制,以及对访问过的状态的标记,以免重复访问,重复访问一方面运行时间加长另一方面申请的空间也会无厘头的暴增. 曾经在刷一道题的时候,系统显示的使用空间远远大于定义变量的空间,一时间懵逼了,后来才发现是标记没处理好,导致了大量的重复访问. 还有一个要注意的地方就是队列的清空,或者在函数里面定义队

‘简单’搜索专题总结

kuangbin专题一 A. 棋盘问题 在是棋盘的格子上放置棋子,其中要求所有棋子不同行也不同列,求摆放的方案数. dfs,参数:行.棋子数,遍历的时候要回溯. B. Dungeon Master 走迷宫,3D的走迷宫. C. Catch That Cow 最短时间找到那只牛. bfs,剪枝. D. FilpTile 翻方块,上一行状态决定下一行的翻转. E. Find The Multiple 大胆的bfs,数据范围很小的. F. Prime Path bfs G. Shuffle'm Up

记忆化搜索专题

Hdoj  1078 题目足迹 题意: n*n的矩阵,从(0,0)出发,每个点上有一个数值,每次只能水平或竖直的走至多k个格子,要求总的路线上的数值是严格单增的,并且使总的和最大. 代码: 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #define mem(a,b) memset(a,b,sizeof(a)) 6 #define for

搜索专题小结:迭代加深搜索

迭代加深搜索 迭代加深搜索(Iterative Deepening Depth-First Search, IDDFS)经常用于理论上解答树深度上没有上界的问题,这类问题通常要求出满足某些条件时的解即可.比如在"埃及分数"问题中要求将一个分数a/b分解成为若干个形如1/d的加数之和,而且加数越少越好,如果加数个数相同,那么最小的分数越大越好.下面总结一下该方法的一般流程: (1)概述:迭代加深搜索是通过限制每次dfs的最大深度进行的搜索.令maxd表示最大的搜索深度,那么dfs就只能在

poj 3126 Prime Path(搜索专题)

Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 20237   Accepted: 11282 Description The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-di

搜索专题(不定期更新)

1.POJ 2386  Lake Counting 题意:给出一块区域,询问有多少个湖泊? 思路:DFS,对于'W',深搜一次,并标记已访问.之后每次对未访问的'W'做一次深搜. 1 #include<iostream> 2 #include<memory.h> 3 using namespace std; 4 char lake[105][105]; 5 bool vis[105][105]; 6 int n, m; 7 void DFS(int r, int c) 8 { 9

暴力搜索专题小结:全排列及可重集排列生成算法

1~n的全排列 (1)思路:按照递归的思想,初始化集合S中含有1~n所有元素.如果1~n的集合S为空,那么输出全排列:否则从小到大依次考虑每个元素i,在A的末尾添加i后,集合S变为S-{i}.这里我们不需要集合S,只需要利用一个变量cur表示当前位要填的数即可.那么A中没有出现过的元素均可以选择. #define N 100 int A[N]; void print_permutation(int n, int*A, int cur) { if (cur == n) { for (int i =