
深度优先搜索(DFS)
文章平均质量分 56
ramay7
Life is not short,but float.
展开
-
POJ 3083 Children of the Candy Corn(走迷宫)
题目链接:POJ 3083题意:给一个迷宫,‘#’代表墙,'.'代表可行,’S‘代表入口,’E‘代表出口。分别求出:①按左、上、右、下顺序前行从入口到出口的步数。②按右、上、左、下顺序前行从入口到出口的步数。③从入口到出口的最短步数。入口在边上但不在拐角处。入口和出口也各算一步。分析:最短路径直接用BFS求解。先分析第一种要求,即左上右下的顺序,第二种与之类似。原创 2015-12-25 16:31:56 · 508 阅读 · 0 评论 -
POJ 1270 Following Orders(dfs/next_permutation())
题目链接; POJ 1270 Following Orders 题意: 给出nn个不同的小写字母和若干约数关系,表示某些字母不能排在某些字母前面。按字典序输出所有可能的排列。 数据范围:2≤n≤202\leq n \leq 20,必定存在可能的排列,并且排列个数≤300\leq 300。 分析: 有两种思路。 用link[i][j]link[i][j]表示编号为ii的字母不能排在编号为原创 2016-07-18 21:29:32 · 495 阅读 · 0 评论 -
Codeforces 149 D Coloring Brackets(区间dp,标记状态,dfs)
题目链接: Codeforces 149 D Coloring Brackets 题意: 给一个正确匹配的圆括号字符串,比如:(),(()),(()())(), (()),(()()),要对括号进行染色:对每个括号可以选择不染色,染红色,或者染蓝色每对匹配的括号必须有且仅有一个染色相邻染色的括号的颜色不能一样求最终的所有染色方案数?结果对1e9+71e9+7取模。 数据范围:字符串长原创 2016-07-27 00:09:54 · 487 阅读 · 0 评论 -
HDU 1796 How many integers can you find(求1到n-1之间能被一个集合A内元素整除的数的个数)
题目链接: HDU 1796 How many integers can you find 题意: 求1−n−11-n-1之间能被一个集合AA内元素整除的数的个数,例如n=12,A={2,3}n = 12, A = \{2, 3\} 则能被AA集合元素整除的数的集合为{2,3,4,6,8,9,10}\{2, 3, 4 , 6, 8, 9, 10\}则结果为77。 分析: 容斥原理原创 2016-07-13 20:59:33 · 629 阅读 · 0 评论 -
CF 615 B Longtail Hedgehog(dfs/dp)
题目链接: CF 615 B Longtail Hedgehog 题意: 有n个点,m条边。 找到一条这样的路径:路径上顶点序号都是上升的,并且路径长度*终点的连接顶点数最大。输出这个最大值。路径长度就是路径上顶点数目。 分析: ①:用dp[i]表示以i为终点的最大路径长度,那么 dp[i]=max(dp[j]+1),其中j//124MS 6000K#include <iostrea原创 2016-03-05 18:44:49 · 450 阅读 · 0 评论 -
UVALive 7009 Secret Binary Tree(二分查找、dfs)
题目链接: UVALive 7009 Secret Binary Tree 分析: 先用dfs把所有可能的构造方案都处理出来,然后用二分查找处理出s[i],排序。 要想使的secret number最小,一定是将比较大的数放在完全二叉树的最下层,将小的数放在完全二叉树的倒数第二层。#include <iostream>#include <cstdio>#include <cstring>原创 2016-05-01 17:16:34 · 540 阅读 · 0 评论 -
POJ 1873 The Fortified Forest(凸包+DFS枚举)
题目链接: POJ 1873 The Fortified Forest 题意: 有n棵树,知道了每棵树的坐标和高度以及价值,需要砍掉一些树能用这些树的长度对没砍掉的树做成一个围栏, 要保证剩下的树的价值最大,问需要砍掉哪些树,以及围成围栏后剩下的树长度是多少? n范围2<=n<=15. 分析: 砍完后剩下的树需要的最小围栏长度,就是这些树所形成的凸包的周长。 因为n只有15所以可以d原创 2016-04-19 01:18:27 · 419 阅读 · 0 评论 -
POJ 1564 Sum It Up(DFS)
题目链接: POJ 1564 Sum It Up 题意: 给你一个非递增数组,输出由数组中的数字组合的相加和等于给定t的所有可能组合。 每个组合内部按照非递增顺序输出,每个组合按照首数字从大到小排序,首数字相同比较第二个数字,依次类推。 分析: 输出要求按照DFS的搜索顺序存储输出即可。 DFS过程中需要记录有哪些数字被使用了,以及当前和,当前遍历的数字编号。 注意判重。CODE:/原创 2016-03-06 21:01:27 · 422 阅读 · 0 评论 -
UVA 624 CD(01背包/记录路径)
题目链接: UVA 624 CD 题意: 给出n个物品和总价值P,每个物品有一个价值,输出由这些物品组成价值和最接近P的价值(不能超过P)和和这些物品编号。 如果有多种方案任意输出一种。 分析: ①:先用类似01背包的思路对小于等于P的价值和进行可行性分析,然后找到最大能组成的合法价值和。根据这个价值和对原来的物品 dfs搜索。 ②:在找最大价值的过程中记录组成价值和的最后一件商品编原创 2016-03-30 14:51:58 · 531 阅读 · 0 评论 -
POJ 1176 Party Lamps (DFS)
题目链接:POJ 1176题意:对于一串彩灯,提供四种改变彩灯状态(ONOFF)的操作:a.改变所有彩灯状态;b.改变奇数彩灯状态;c.改变偶数彩灯状态;d.改变3k+1号彩灯状态(1,4,7,10...)。 给定彩灯数目,操作次数,和对于某几个彩灯必须为ON、某几个彩灯必须为OFF的要求,问经过给定次数的操作,最终能达到的满足要求的状态有多少种,输出所有满足要求的彩灯状态(按原创 2016-02-19 14:32:24 · 593 阅读 · 0 评论 -
HDU 1241 Oil Deposits(油藏)
题目链接:HDU 1241题意:给一个二维字符数组,‘@’代表有油,‘*’代表没有,如果两个油田在水平或竖直或对角线方向相通,那么这两个油田属于同一个pocket,pocket里可能也只有一个油田。问给定的油藏情况共有多少个pocket?分析:两天前做的时候还没有头绪,今天拿出来又想了一下,突然有了思路。同样是BFS搜索。但是每次搜索是从一个尚未被访问的油田开始,然后把从这个油原创 2015-12-26 20:27:52 · 444 阅读 · 0 评论 -
POJ 1321 棋盘问题
题目链接:POJ 1321题意:给一个n*n的棋盘和k颗棋子,只有棋盘上符号是'#'的位置才能放置棋子,且同行同列军最多只能有一颗棋子。问给出棋盘和k最多有多少种排法?分析:按行一行一行排放棋子,如果该行安排了棋子,那么将棋子所在列记标记,再在下一行安排下一颗棋子,直到将所有棋子安排完了,即所在行可以安排棋子,并且剩余棋子数为1.注意点:递归退出条件还原每次递归完记得还原列原创 2015-12-24 15:38:58 · 397 阅读 · 0 评论 -
POJ 1426 Find The Multiple (寻找倍数)
题目链接:POJ 1426题意:给一个正数n找出一个n的倍数,并且这个倍数各个位上的数字不是0就是1。如果有多种答案,输出一个即可。分析:首先想到了大数乘法,由于要保证每个位上的数字非0即1,那么由n的最后一位不为0的数就可以限制乘数。例如n最后一位不为0的数如果是1,那么乘数的最后一位只能是1(如果是其他数字那么相乘得到的数最后一位一定不满足非0即1)【0除外,相当于*10了原创 2015-12-25 21:10:38 · 532 阅读 · 0 评论 -
Codeforces Round #368 (Div 2) A,B,C,D,E
比赛题目链接A.Brain’s Photos给一个$n*m$的方格,判断是黑白色还是彩色:只要含有字母’C’,’M’,’Y’中任意一个就认为是彩色的。 暴力判断,时间复杂度:$O(n*m)$。#include <iostream>#include <cstdio>#include <cstring>#include <string>#include <algorithm>#include原创 2016-08-22 13:31:35 · 500 阅读 · 0 评论