思路:对每一条边涂上颜色1或-1,颜色值加到关联的两个点上,则一种成功的方案必须满足最后每个点的值为0.剪枝:统计出和某个点i相关联的边的个数,如果枚举到某一条边的时候发现:abs(sum[i]) > degree[i],则剪去,其中sun[i]表示i点的值,degree[i]表示剩下的还没有枚举的...
分类:
其他好文 时间:
2015-07-23 21:24:05
阅读次数:
150
// 思路请点这里#include#include#includeusing namespace std;int board[9][9]; // 棋盘int RowFlag[9][10]; // RowFlag[i][j]=1 表示 在 第i行 已经放了数字 jint ColFlag[9][1...
分类:
其他好文 时间:
2015-07-21 12:37:19
阅读次数:
113
http://poj.org/problem?id=1564dfs三个参数 x,sum,k, x表示开始的坐标,sum表示当前的和,k表示这是一组答案中的第几个数,是用来记录路径的...调了好久没写出来...我写完之后答案会有重复.一开始想开一个boolean数组记录,这样第一组样例的3+1就只会....
分类:
其他好文 时间:
2015-07-17 15:51:55
阅读次数:
82
1 #include 2 #include 3 #include 4 using namespace std; 5 6 const int N = 100; 7 int stick[N]; 8 bool used[N]; 9 int n, snum, slen;10 11 bool dfs...
分类:
其他好文 时间:
2015-07-17 11:54:40
阅读次数:
111
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5113
题面:
Black And White
Time Limit: 2000/2000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others)
Total Submission(s): 1336 A...
分类:
其他好文 时间:
2015-07-16 22:23:31
阅读次数:
157
题目链接:点击打开链接
题目大意:给出n个字符串,要求组合后的串最短
#include
#include
#include
using namespace std ;
char str[12][22] ;
char s[300] , s1[300] ;
int vis[12] , min1 , n , l[12];
void dfs(int cnt,int k) {
//prin...
分类:
其他好文 时间:
2015-07-16 16:43:28
阅读次数:
89
一开始最容易想到间隔最多为n,但是结点还是太多了,需要优化。剪枝1:预判一下并保存下一个可以放的位置距离之前的距离。这样可以减少很多判断。剪枝2:如果当前长度+剩下没放的程序*最短间隔如果大于等于ans,那么对答案没有贡献,可以剪去。优化:占用和不占用两种状态,如果横向来看可以压缩为int,判断时用...
分类:
其他好文 时间:
2015-07-14 17:25:39
阅读次数:
87
51nod 1400 序列分解(DFS + 剪枝)...
分类:
其他好文 时间:
2015-07-08 16:40:19
阅读次数:
117
Sticks
Time Limit: 1000MS
Memory Limit: 10000K
Total Submissions: 127771
Accepted: 29926
Description
George took sticks of the same length and cut them randomly unt...
分类:
其他好文 时间:
2015-07-08 14:42:21
阅读次数:
98
题目请点我
题意:
有一个迷宫,看能不能经过T秒恰好从起点走到终点。因为可能会考虑到绕路,2^49可能会超时(况且涉及到绕路,墙的数目一定不会很多),我们就可以在每次都进行一次判断,看剩下的时间能否走到终点。另外因为只能在T秒走到,那么绕路的话一定会多走偶数步数,利用这个性质也可以剪枝。这道题其实之前做过的,但是第二次做还是TLE了很多次,其实这题的关键不仅是dfs,在T秒恰好到达需要绕路才是这...
分类:
其他好文 时间:
2015-06-14 18:36:29
阅读次数:
90