搜索
文章平均质量分 59
jason_star
我要变强!
展开
-
【HDU】1254 推箱子(BFS DFS HASH记录走过的状态)
思路: 很容易想到用搜索去做,并且很容易想到在搜箱子的同时要去搜索人能否到达。 并且两个搜索我们在搜索的同时可以看成是独立的。 人搜索能不能到用DFS并且不用回溯,这样速度会更快。因为对于同一点我们只要到一次就可以了,并不要求最短。所以不用回溯。 在搜索箱子能不能到的时候并没有考虑到重复通过一点的问题。但是时候看了题解才恍然大悟,例如在箱子堵住了唯一路口,但要向人那边前进的时候,就需要后退,原创 2015-02-10 17:36:20 · 511 阅读 · 0 评论 -
【POJ】3279 Fliptile(十字变换搜索+二进制枚举)
/*题目大意:有一个最大是15*15的方格,只有黑(1)白(0)构成,当你反转一个的时候,将黑变成白,白变成黑他的四个方向也会跟着反转,现在就是问你怎么反转使得最后的翻转次数最少,假如反转次数相同的话字典序最小。看到这题目瞬间就犯难了,老实说,没有做过。实在不敢花时间深究,那就只能好好学了。好了, 现在解决两个问题:1、怎么搜索,能够保证搜索完的结果是正确的。这种题目我们不应该从点出发,原创 2015-02-12 14:25:22 · 949 阅读 · 0 评论 -
【Fzu】2150 Fire Game(BFS)
先判断连通性,然后选择两个点进行BFS,最终时间比一下大小即可,AC时间是1s刚刚好过了。#define _CRT_SECURE_NO_WARNINGS#include<iostream>#include<queue>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;char mz[12][原创 2015-02-12 18:17:47 · 520 阅读 · 0 评论 -
【ZOJ】3841 Card (搜索+组合数学(重复元素的全排列)
题目大意:一副牌除掉大小王,然后有一些已经形成了序列,让你算剩下的牌能组合出多少种比给的序列小的组合。思路:搜索,分这个位置相同或者小于,假如放一个小于的,则剩下的就是全排列只不过这边的全排列是相同元素的全排列。所采取的是位置的选择的排列方式。比如1112233这个所有的情况就是c(7,3)*c(4,2)*c(2,2)题目wa了很多发。题目需要注意,是严格小于,等于是不行的原创 2015-03-22 23:27:18 · 675 阅读 · 0 评论 -
【FZU】2185 树的路径覆盖(搜索)
题目思路:先说一下题目的意思吧,我一开始还真是看不懂,路径到底指的是什么。后来才慢慢懂了,原来他的路径指的是有几条线(可以是折线,但这一条折线不能通过重复的地方)可以把所有的边走遍。对于可以覆盖的情况,这边只需要统计出有多少个叶子,由于一棵树,你从一个点出发,你可以到达任意的一个点。所以这个答案就是(叶子数cnt+1)/2对于不可以覆盖的情况看代码注释了。#define _原创 2015-03-23 22:46:17 · 873 阅读 · 3 评论 -
B - 娜娜梦游仙境系列——跳远女王 (最短路)
思路:比赛的时候并没有想到,赛后的时候也并没有想出来。自己一直无法突破的地方在于1000个点,要是我给每个点建边的话,那么100W就会爆,其实并不会爆。而且这边可以采用的是建双向边,就是j跟j前面的建双向边。这样最终时间会少很多,而且效果是一样的。最终跑一遍SPFA就可以了自己一直没有好好学过图和搜索。听说建图的方法有邻接链表还有什么表来着,自己都不会,可笑。难怪遇到题目的时候原创 2015-04-16 09:03:20 · 1314 阅读 · 0 评论 -
ACdream 暴力专场F
跟校赛的那道质数搜索类似.求一个数可以由多少k个数相加组成.从大到小搜索一遍就可以了.并且正好符合他的条件,学习了.#define _CRT_SECURE_NO_WARNINGS#include#include#include#includeusing namespace std;int n,k;int ans;void dfs(int id, int sum,int原创 2015-04-29 18:57:32 · 468 阅读 · 0 评论 -
HDU Exploration (DFS判断环,以及重边可算的处理方法)
题目大意:有若干个点,每个点之间有无向边或者有向边,并且只能走一次。问有没有存在一个点能够走出去又走回来的。思路:这道题思路当时一下子就想出来了。从每一个联通块的任何一个点出发去dfs,搜到一个点,将其标记,并继续往下搜,假如这个点已经被标记过了,那么说明之前从这个点出发过,并且现在又可以回到这个点。结束!现在说一下处理边只走一次的方法:我是用奇数表示一个方向,偶数表示这个原创 2015-05-02 18:33:38 · 708 阅读 · 0 评论 -
HDU 5215 Cycle (搜索)
这个题目跟同比赛的Exploration类似,做法也类似。在那道题目只需要判断出是否存在环。而这道题目则判读这个环的边是奇数边还是偶数边。我这边采用的方法是用num表示这个点在搜索到第几条边是被搜到。下次在被搜到的时候,边数减掉上一次搜到时候的边数,就是从这个点出发回到这个点的边数了。然后判断一下奇偶就可以了。假如已经有奇数和偶数,就不用在继续搜了,直接结束,也算是小小的剪枝。#p原创 2015-05-04 15:48:45 · 817 阅读 · 2 评论