其实回溯挺简单的就是暴力+判断条件,条件成立继续暴力,条件不成立就返回下一个暴力,难点就是找成立的条件,
在我看来回溯就是暴力的剪枝,找出成立的条件问题就基本解决了。。。
思路:
这道题应该找到当前的乘车顺序及人数能否乘上车,,,我用num数组标记了每个车站的人数
贴代码:
#include
#include
#include
int num[10];
struct
{
int x,...
分类:
其他好文 时间:
2015-07-28 13:08:22
阅读次数:
122
题意: 一个人在原点,速度大小已知。n个目标的初始坐标,速度方向,速度大小均已知。求人抓到所有目标的最小时间和。解决: 题目给定n <= 15,这个数据范围可以接受15!的暴搜搜加上一定剪枝,或者n*2^n,状压DP。 dp[i][state]表示追上目标 i 之后,当前局面状态为state时...
分类:
其他好文 时间:
2015-07-27 14:44:53
阅读次数:
90
【dfs】hdu 1175 连连看题目链接:hdu 1175 连连看题目大意连连看,问能否成功?题意很简单,就是我们平时玩的连连看的游戏规则,貌似dfs和bfs都能做,笔者就做了个dfs(好想),超时了好几次,原因是dfs(int d)与终点的d重载矛盾了,所以还是要小心。说一下思路
神器的剪枝:if(t==2&&x!=c&&y!=d) return;这一部剪枝妙笔回春,9000+MS优化到100+...
分类:
其他好文 时间:
2015-07-27 13:11:41
阅读次数:
98
该题目用到一定理 :在方格中按四连通方向走,则起点到终点的最短步数与任何路径的步数的奇偶性相同#include #include using namespace std;const int SIZE=8;char maze[SIZE][SIZE];int N,M,T;int sy,sx;int e....
分类:
其他好文 时间:
2015-07-27 12:56:38
阅读次数:
102
题目的大致意思是:
现在有n根木棍,然后需要把它们拼成同样长度的木棍,问满足这个条件的最短的长度是多少?
想法嘛:那肯定是dfs把长度搜一遍就好,但问题的关键是这里会超时。那么就要用到剪枝的原理了。
以下部分是来自于pku的gw老师说哒
1)不要在同一个位置多次尝试相同长度的木棒(在某一次拼接时选择长度为s的木棒导致拼接失败,则在同一位置尝试下一根木棒时,要跳过所有长度为s的木棒)
2)...
分类:
其他好文 时间:
2015-07-26 19:23:03
阅读次数:
120
水水的DFS
题意:n个人m个关系,要求每个人的网上朋友和现实朋友一样多,求一共有多少种关系
解:因为数据小,暴力DFS就可以了,不过要一点小剪枝
#include
#include
int point[10];
struct aaa
{
int x,y;
}line[30];
struct bbb
{
int online,outline;
}node[10];
int...
分类:
其他好文 时间:
2015-07-26 11:14:08
阅读次数:
126
题意:
给你n个人m条关系
每条关系包含a,b
代表a和b可以是线上朋友也可以是线下朋友
然后保证每个人的线上朋友数和线下朋友数相等
问你有多少种组成方法
思路:
官方题解是爆搜+剪枝,然而并不会写。。
比赛的时候想到用高斯消元来剪枝
最后枚举自由元
因为关系的话到了最后肯定有些关系是确定的。
这样一定会消掉一些部分
最后G++AC C++TLE。。
代码:
#incl...
分类:
其他好文 时间:
2015-07-24 18:37:56
阅读次数:
169
题目链接:点击打开链接
题目大意:给出一个n和一个k 求m
要求1、m要和n相同的位数
要求2、m要整除k
要求3、如果1和2满足,那么m要和n有尽量少的不同位
要求4、如果1、2、3满足,要使m尽量的小
简单的一个深搜,但是直接被要求吓蒙,,,,,
要求1和2直接可以在搜索时判断,要求3可以在深搜时给出可以改变的位数(有0到len(n)),而要求4需要控制在搜索是要从小的开始搜,即...
分类:
其他好文 时间:
2015-07-24 18:26:57
阅读次数:
108
题意: 如图,一列未知的区域长度为n(≤1000),给出第二列的数字,求区域中雷的排列有多少种。Solution: 搜索。这题看上去1000的范围很大,实际上加上合理的剪枝,状态数会变得非常非常少。 一个雷最多能影响3个格子,直接从上往下枚举这个地方有没有雷。有雷的话给影响的格子的数字减一。 ...
分类:
其他好文 时间:
2015-07-24 17:32:19
阅读次数:
136
题意:有n个人(n
做法:建成一个图,如果边的数目是奇数或者有人的度数是奇数,那个方法数肯定是0。否则,我们可以将边进行染色。假设黑色代表两个人之间是线上朋友,白色代表两个人之间是线下朋友。那么要满足条件,必须全部边有一半被染色,并且对于每个人相连的边有一半被染色。我们可以取一半的边进行染色,然后判断是不是每个人的一半相邻边被染色。这样,耗时为C(14,28)。加上一些情况的剪枝,就能顺利通过!...
分类:
其他好文 时间:
2015-07-24 12:54:52
阅读次数:
98