dfs
luckyone2014
想思路是苦涩艰辛的,但是打代码是愉快的。
展开
-
hdu 1342 一道比较水的深搜
#include #include #include using namespace std;int n,data[15];int num[15];void dfs(int shu,int bianhao)//shu 代表 已经有几个选好的数在num里了 //编号代表 已经在data数组里 历变到了第几个{ if(bianhao>n+1) return; if(shu>7) r原创 2014-07-07 18:38:26 · 661 阅读 · 0 评论 -
POJ 3400 Dropping the stones 深搜,然后加个小优化
题意是有n个石头,每个石头有对应的重量pi, 和对应的 价值 vi;有两条水沟,, 轮流放石头, 要求B水沟最后的总花费要最大. 每次放可以放任意哪个石头.开始是在A水沟里放, A的总重量大于 B 水沟重量+D后, 就开始放石头进B , 如果B水沟总重量大于 A水沟总重量+D,下一次又开始要放石头进A水沟原创 2014-08-03 18:45:13 · 907 阅读 · 0 评论 -
hdu1010 深搜剪枝.
#include #include int n,m,t,sx,sy,dx,dy,flag;char mp[10][10];int dir[4][2]={1,0,0,1,0,-1,-1,0};int check(int x,int y){ if(x>=0&&x=0&&y<m&&mp[x][y]!='X') return 1; return 0;}void dfs(int x原创 2014-07-09 23:28:05 · 588 阅读 · 0 评论 -
hdu Illusive Chase 1364 dfs
题意:输入一个地图,0表示可以走,1表示不能走。接下来再出现0 0 之前,输入若干个操作。前两个数字代表走的步数范围,每次走的步数都可以是在这个范围里的任意步。最后一个字母代表 走的方向。 输出有多少个 为0的位置可以作为起始点。起始位置的要求是,有一种的走法,可以使其 走完 给的若干个操作后,在走的过程中 不会遇到障碍1 ,并且不会超出地图范围。第二个案例,因为第二个操作 最少向上走三步, 所以肯定超出范围了。所以没有点可以做为起始点。 做法:枚举所有点,dfs 所有走的步数范围。 注意 如果步原创 2015-03-05 18:07:56 · 725 阅读 · 0 评论 -
hdu 1501 Zipper 记忆化搜索
题意:输入三个字符串,aa,bb,cc。 cc是由aa和bb组成的。但是aa和bb在cc中的原顺序不变。问cc是否可以由aa和bb构成。做法:dfs,要记录状态。先拿aa的当前字母去试,能匹配cc的当前字母,就继续搜下去。不能的话搜索bb当前字母和cc的当前字母是否匹配。原创 2015-03-09 22:08:25 · 702 阅读 · 0 评论 -
hdu 5355 Cake dfs暴搜 构造
题意:把有n块蛋糕, 大小分别是1-n。 分给m个人, 个数随便,大小和要全相等。做法:其实那两个不合法的情况,做比赛时队友已经发现了。后来按照 最大的 和某一个小的数 凑对,贪心来做。 比赛时Ac了。赛后数据加强 ,这种方法在数据23 6时会有bug。然后根据题解,在数字大于m*4 的时候 从大到小, 蛇形分配。原创 2015-08-07 19:41:05 · 766 阅读 · 3 评论 -
codeforces 570 D. Tree Requests 树状数组+dfs搜索序
题意:告诉你一颗树的父子关系,1节点为根,再告诉你每个点上的字母。问 v节点 子树(包括v节点)在第h行的所有节点的字母能否组成回文串。做法:先用dfs 搜索 把所有节点标个左标号和右标号。 这样标号以后,每个节点 用左标号 当自己 新的标号。 然后 子树所有节点 的新标号 肯定在 子树根节点的 左右标号之间。标号之后分层来做。每层 对每个字母分别做统计。把该层所有节点 的 左标号 在树状数组中+1. 然后对于该层的所有询问 做 树状数组统计,(sum(rit[v])-sum(lft[v原创 2015-08-16 10:53:02 · 1258 阅读 · 0 评论 -
cf #256 (Div. 2) C. Painting Fence 分治
渣渣昨天被二分玩弄了一天, 精疲力竭.所以没去做C .感觉C 不是很难.原创 2014-07-19 15:21:26 · 960 阅读 · 0 评论 -
hdu 5348 MZL's endless loop 暴搜
题意:给n点m条无向边,要给每条边定一个方向,最后图中所有点的出入度差小于等于1.做法:暴搜,注意用完的边要删去,更新下head就可以删边了。 然后 每个dfs 只找一条路径, 找到后就break。原创 2015-08-05 16:16:06 · 668 阅读 · 0 评论