搜索
我的程序跑快快
这个作者很懒,什么都没留下…
展开
-
HDU - 1429 胜利大逃亡(续)(BFS搜索)
bfs思路:考虑BFSBFSBFS搜索,考虑每个状态,所在位置m∗nm*nm∗n,携带钥匙状态2102^{10}210,总计20∗20∗1e3=4e520*20*1e3 = 4e520∗20∗1e3=4e5。代码:#include <bits/stdc++.h>#include <stdio.h>#include <queue>#include &l...原创 2019-11-14 21:37:35 · 223 阅读 · 0 评论 -
2019年ccpc哈尔滨站F题(dfs枚举) Gym - 102394F Fixing Banners
题目大意:T组测试数据,每组输入6个字符串,每个字符串选出一个字母,问能否组成harbin字符串思路:方法一:处理出每个字符串存在的harbin字符子集,然后枚举子集,最差时间复杂度6^6,剪枝可去掉方法二:枚举六个字符串的顺序,然后检测是否可以成功,时间复杂度6!,可剪枝一部分对比一下选择方法二#include <stdio.h>#include <iostr...原创 2019-11-14 10:40:22 · 750 阅读 · 0 评论 -
2017百度之星初赛(A) 1006 度度熊的01世界(bfs找连通块)
题目大意:大概就是找给定地图中的连通块个数相关的,代码打的还是慢。原创 2017-08-12 19:28:19 · 494 阅读 · 0 评论 -
HDU - 5952 Counting Cliques(图上暴力搜索+技巧剪枝)
题目大意:给你一个无向图,100个点1000条边,问你这个图中有多少个小于等于s的点集可以组成一个完全图。s<=10原创 2017-10-19 21:56:53 · 497 阅读 · 0 评论 -
HDU - 5113 Black And White(棋盘涂色dfs搜索+剪枝)
题目大意:给你一个 n*m 的棋盘,然后有 k 种颜色,第 i 种颜色可以用 cic_i 次,一共这些颜色正好可以用m*n次,现在让你找出一种涂色方案使得每一对相邻的格子的颜色都不相同。如果没有输出NO。原创 2017-10-22 14:01:31 · 491 阅读 · 0 评论 -
2016年蓝桥杯省赛A组C/C++ 第二题 跳蚱蜢(BFS搜索+状态压缩)
题目描述: 标题:跳蚱蜢 如图 p1.png 所示: 有9只盘子,排成1个圆圈。 其中8只盘子内装着8只蚱蜢,有一个是空盘。 我们把这些蚱蜢顺时针编号为 1~8 每只蚱蜢都可以跳到相邻的空盘中, 也可以再用点力,越过一个相邻的蚱蜢跳到空盘中。 请你计算一下,如果要使得蚱蜢们的队形改为按照逆时针排列, 并且保持空盘的位置不变(也就是1-8换位,2-7换位原创 2018-01-06 23:28:01 · 4577 阅读 · 5 评论 -
HDU - 6044 Limited Permutation(dfs搜索+阶乘逆元预处理组合数+组合数学+输入输出挂)
题目大意:有一个n个数的置换序列,告诉你每个数在包括它自己的哪个区间内最大(最大满足要求区间),然后让你求有有多少种置换方式满足上述要求。思路:之前一直没试过通过预处理阶乘和阶乘逆元来初始化组合数。这样做可以将求 C(n,m) 的时间复杂度降至 O(n) ; 另外将区间排序后居然可以顺次遍历满足搜索的顺序,即区间dfs分解顺序。这样避免了使用 hash 映射的 log(n) 。原创 2018-01-08 11:38:24 · 295 阅读 · 0 评论 -
基于深度优先搜索、数码剪枝的输出路径问题丨返向BFS的路径搜索丨路径之谜
题目描述: 路径之谜 小明冒充X星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是 n x n 个方格。【如图1.png】所示。 按习俗,骑士要从西北角走到东南角。 可以横向或纵向移动,但不能斜着走,也不能跳跃。 每走到一个新方格,就要向正北方和正西方各射一箭。 (城堡的西墙和北墙内各有 n 个靶子)原创 2018-01-09 23:48:07 · 634 阅读 · 0 评论 -
八数码问题 解的存在性证明以及解法分析(附代码)
问题描述:很经典的问题,给一个4399的网址,自己玩一下就知道了。。。。。 8数码小游戏试玩分析:一 . 基础BFS最显然想到肯定是暴力搜索,因为我希望找到一个最少操作步数的解决方案,所以比较明显的就是可以用最基本的广度优先级搜索,因为我的状态一共只有 9! 种,所以即使搜遍所有状态还是很快的。 那么如何判断某一状态是否已经搜过了呢,还是用标记数组。显然就是把 0~8 ...原创 2018-02-28 17:28:18 · 1436 阅读 · 0 评论 -
十滴水问题求解器第二版(bfs+hash去重)
改进介绍对比之前的程序:1.添加了hash去重,减少bfs扩展结点个数,加快了搜索个数,对于任何局面均可在1s内完成搜索。2.改变了对于某一局势的变化方式,从以前的dfs变成了强行模拟每一粒水滴,增加了准确性。代码:#include<bits/stdc++.h>using namespace std;const int bas = 6;#define MOD 1000000...原创 2019-02-17 20:04:25 · 469 阅读 · 0 评论 -
连续邮资问题(DFS搜索回溯)
题目内容:思路简述:首先既然是n个数字,可重复选取m个,那么枚举长度为n的序列a的所有可能情况,限制条件为:1.a数组严格单调递增2.a数组第一个数字为1然后如果这样枚举那么枚举空间是无限的,因为此时:a[0] = 1 , a[1]的枚举范围可以是[2,+∞)。所以需要再加一些限制:假设a[0]a[k]选m个能组成的最大连续数字为:1s,那么a[k+1]的枚举范围一定是:[a[k]...原创 2019-06-10 07:45:47 · 1440 阅读 · 0 评论 -
算法设计与分析:连续邮资问题(搜索)实验报告
实验内容:算法讲解:首先既然是nnn个数字,可重复选取mmm个,那么枚举长度为nnn的序列AAA的所有可能情况,分别计算出每种序列“选mmm个(可重复)能组成的最长连续邮资为多大”(后面将其称为**“序列的最大值”**),找出那个“序列的最大值”最大的序列就是答案了。但是我们发现因为自然数是无限大的,AAA序列的每个位置理论上都可以有无数种可能,所以我们要通过提前分析,得到一些AAA序列的...原创 2019-06-21 15:47:52 · 2174 阅读 · 0 评论 -
算法设计与分析:最短路径问题(哈密顿回路+最短路)小学期实践
最短路径问题一、题目要求:二、子问题(1)哈密顿回路1.问题建模描述给定一个n个结点,m条有向边(边权为正)的图,求出一条路径满足如下条件:条件一:该路径可以从任意节点开始,不过起点和终点必须相同。条件二:该路径除了起点和终点,其他结点都必须经过,且只能经过一次。条件三:在满足上述两条件的前提下,要求路径尽可能短。2.DFS搜索算法分析:有两种搜索的思路,第一种就是在不考虑图...原创 2019-07-09 21:48:23 · 10838 阅读 · 0 评论 -
HDU - 6060 RXD and dividing(树的dfs)
题目大意:给你 n 个点和 n-1 条边组成一颗树,然后让你把这 n 个点分成 k 组,每一组的值为这一组所有点和 1 号 结点组成的最小斯坦纳树的边权之和。现在问你如何划分才能得到使得这k组的值最大。分析:首先我们考虑一件事,那就是,对于任意一条边,无论如何划分,这条边只有可能最多被选取 k 次。 现在我来定义一种选取方法。对于一条边,它能被选取的最多次数为:min{左边的点的个数,右边的点的原创 2017-08-02 10:53:24 · 385 阅读 · 0 评论 -
4399小游戏 十滴水 求解器(输出路径的bfs)
题目大意:4399上面的一个小游戏,突然想能不能用程序得到最优解。网址在这里大家可以去试着玩一玩:http://www.4399.com/flash/6356_2.htm原创 2017-05-30 14:51:43 · 1625 阅读 · 0 评论 -
POJ - 1321 棋盘问题 解题报告
题目大意:让你在一个n*n(n<=8)的棋盘中放k(k<n)个棋子,要求每个棋子都不能在同一行或者同一列 。然后你得输出对于每个棋盘有多少种摆放方式。原创 2017-02-12 21:12:09 · 300 阅读 · 0 评论 -
POJ - 3126 Prime Path解题报告
题目大意:给你两个四位数a,b。每次可以给a的一位更换一个数,要求更换之后得到的数必须是质数,问你最少几次更换,就可以使得a变成b。测试数据100组。原创 2017-02-21 11:54:08 · 802 阅读 · 1 评论 -
POJ - 2251 Dungeon Master解题报告
题目大意:一个三维的图(30*30*30),求出从起点S到终点E的最短距离(有可能走不到) '.'可以走,'#'不能走 。原创 2017-02-13 11:06:58 · 924 阅读 · 0 评论 -
POJ - 3278 Catch That Cow解题报告
题目大意:给你两个数,N,K;问你从N到K至少需要几步。变换方法有三种n+1,n-1,2*n;原创 2017-02-14 10:18:02 · 273 阅读 · 0 评论 -
POJ - 3009 Curling 2.0解题报告(dfs)
题目大意:大概就是给你一个图,然后图上有不能到的点(墙),然后你就在起点扔一个球,球只能砸到墙才能停止,但是砸到墙上之后,这个墙就没了,你最多可以砸10次,扔出界就算输,问你在一通乱砸之后,能不能把这个球从起点扔到终点。 注意,要是该点紧挨着就是一个墙,那就不能往这个墙的方向上扔。原创 2017-03-09 21:47:20 · 457 阅读 · 0 评论 -
POJ - 3414 Pots解题报告(输出路径的bfs)
题目大意:这个就是以前的接水问题嘛,给你两个锅,装满分别为a,b升水(c<=max(a,b)<=100),问你怎么装出c升水。问你最少的操作步数,并按顺序输出这些操作。原创 2017-03-10 11:05:24 · 311 阅读 · 0 评论 -
POJ - 2531 Network Saboteur解题报告(dfs+剪枝)
题目大意:给你一个n*n(1-20)的矩阵,矩阵里的每个数c[i][j]<10000。让你想办法将1-n这n个数,分成两组AB,使得∑Cij (i∈A,j∈B)取得最大值。原创 2017-03-10 15:46:56 · 373 阅读 · 0 评论 -
POJ - 1416 Shredding Company解题报告(dfs)
题目大意:每组测试数据就是给你两个数,s,n;让你给第2个数n分成几个数,问你怎么分可以让这些分得的数的和在不超过 s的情况下最接近s。s,n最多六位。原创 2017-03-11 21:40:15 · 407 阅读 · 0 评论 -
POJ - 2676 Sudoku解题报告(解数独)
解数独原创 2017-03-12 11:05:47 · 418 阅读 · 0 评论 -
POJ - 1129 Channel Allocation解题报告(涂色问题+四色定理)
题目大意:模型化好像就是涂颜色,相连的点不能涂一个颜色。告诉你了哪些点相连。问你至少需要多少种颜色原创 2017-03-15 07:51:48 · 1338 阅读 · 0 评论 -
POJ - 3026 Borg Maze解题报告(Kruskal+Bfs)
题目大意:多组测试实例(50),每组测试给你一个图(50*50),然后给你一个S点和若干个A点(100)。一个小人从点S开始,他在S点或者A点可以分别成多个小人。现在他要访问到每个点,让你求出他要走的最少的距离。 注意: 只有当borg在S点或者找到一个alien之后,它们可以继续以分成若干的小队伍。 思路:只有在S和A可以分裂,这表示了什么?这表示这个图(无向),每个顶点(A或S)可以有多个边!原创 2017-04-28 11:39:50 · 431 阅读 · 0 评论 -
HDU - 5802 Windows 10解题报告(贪心+dfs)
题目大意:给你两个数a,b。然后对于a可以连续进行减操作,每次减操作减去的数为上一次减操作减去的数的2倍,从减1开始,或者也可以对a进行+1操作或者不操作,之后在进行减操作就是重新从减1开始了。 现在有300,000组测试数据,每组测试数据两个数 0 < a,b < 10e9 。 分析:如果单纯的用搜索,因为有300,000组测试数据,应该就会超时。所以能接受的每一组测试数据的时间复杂度应该就是:原创 2017-05-25 15:00:47 · 284 阅读 · 0 评论 -
POJ - 2488 A Knight's Journey解题报告
给你一个m*n的象棋棋盘,然后问你一个马,是否可以跳遍每一个格(每个格只跳一次)。如果可以,按照字典序输出跳跃顺序;原创 2017-02-12 17:25:30 · 391 阅读 · 0 评论