
搜索
文章平均质量分 75
maiyuetong
这个作者很懒,什么都没留下…
展开
-
hdu 1074 DFS+状态压缩DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1074题意描述:小m现在需要完成 n (n入所有的作业名,现在需要你输出完成作业的顺序,以使得被扣除的分数最少。 如果存在多种方案,则按字典序最小的输出。解题思路:完成同样的作业,如果安排的顺序不一样,被扣除的分数也就不一样,但是需要的时间是一样的。所以我们可以通过压缩状态(2进制映射成10进制)来进行最优解剪枝,题目的n作业的顺序,一种,先完成第1门,再完成第2门。另一种,先完成第2门,再完成第1门。搜索过程都原创 2011-04-22 16:43:00 · 1149 阅读 · 0 评论 -
pku 1980 DFS
/*题目链接http://poj.org/problem?id=1980题意描述:输入p,q,a,n 给定一个分数p/q. 求满足 p/q = 1/a1 + 1/a2 + 1/a3 +...+ 1/ai 所有的组合情况。并且有2个限制条件,i解题思路:由于n代码*//*题目链接http://poj.org/problem?id=1980题意描述:输入p,q,a,n 给定一个分数p/q. 求满足 p/q = 1/a1 + 1/a2 + 1/a3 +...+ 1/ai 所有的组合情况。并且有2个限制条件原创 2011-04-23 15:08:00 · 669 阅读 · 0 评论 -
hdu 1258 DFS
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1258题目描述:给你一个数t作为最后等式的和,并给你一组数a[i](i例:t=4. a[]={4,3,2,2,1,1}输出 4,3+1,2+2,2+1+1解题思路:题目要求输出从大到小输出,所以可以先给所有的数进行降序排序。数据的规模很小,所以可以用暴力搜索。搜索过程中,为了避免重复输出,需要记录前一层搜索的起点,下一层递归搜索的起点不能与前一层记录的点一样...说不清楚,具体见代码#include #inc原创 2011-04-23 01:11:00 · 1350 阅读 · 0 评论 -
hdu 1045 DFS+回溯
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1045题目描述:给你一个n x n的矩阵,若该点不为障碍,则可以放置大炮,大炮可向上下左右4个方向开炮,所以若同一行或同一列存在2门大炮并且他们之间没有障碍,则会出现互相攻击,当然我们不希望这种情况出现。现在问你最多能放置多少门大炮并且他们不能互相攻击。解题思路:对于每个点,若能放置大炮则能选择放或者不放两种情况,若不能放置大炮则就只有一种情况。由于题目的数据规模很小,n#include using name原创 2011-04-23 01:42:00 · 1312 阅读 · 3 评论 -
hdu 1429 BFS+状态压缩
//有位运算#include #include using namespace std;//钥匙编号a,b...j 对应状态数中右数第0,1...9位 int hash[21][21][1100];int pow[11] = {1,2,4,8,16,32,64,128,256,512}; int op[4][2] = {1,0,-1,0,0,1,0,-1}; //方向向量 int n,m,t;char map[21][21];typedef struct原创 2011-05-02 14:49:00 · 575 阅读 · 0 评论 -
hdu 3499 最短路变形
// hdu 3499.cpp : 定义控制台应用程序的入口点。/*题意描述:给定一个带权值的有向图,求给定2点之间的最短距离。但是你有一次机会将某条边的权值变为原来的一半。解题思路: 1,在正向图中求一次dijk,求起点到任何点的距离dis_start[i] 2,在反向图中求一次dijk, 求终点到任何点的距离dis_end[i] 3,枚举所有的边 ans = min{dis_start[i] + weight[i][j] + dis_end[j]} 题目数据很BT,所以要用到邻原创 2011-05-03 23:12:00 · 1054 阅读 · 0 评论