随笔分类 - 搜索
HDU1043 IDA*怒过8数码
摘要:代码放着了,有空研究呵呵// IDA*(迭代式深度搜索)// 把SIZE改成4就可以变成15数码问题/*IDA*算法在是A*与ID算法的结合物,用了A*算法的预估方法和预估值(f=g+h),用了ID算法的迭代深入(最初从Manhatton距离开始)较之A*算法,IDA*算法不需要Open表和Closed表,大大节省了内存空间,而且IDA*算法可以不采用递归式程序设计方法,这样也可以节约堆栈空间。A*,例如目标是D,起始为A,首先初始化将每个节点到D的直线距离赋给节点做代价函数,然后在访问了A之后,马上预测A的子节点B/C,求得B的实际代价为A到B的花费加上B的原始代价.同理取得C的实际代价,之
阅读全文
八数码裸bfs
摘要:#define DeBUG#include #include #include #include #include #include #include #include #include #include #include #include #include #include #includeusing namespace std ;#define zero {0}#define INF 2000000000#define EPS 1e-6typedef long long LL;const double PI = acos(-1.0);inline int sgn(double x){ ..
阅读全文
HDU3699 A hardaosu Problem
摘要:#define DeBUG#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std ;#define zero {0}#define INF 2000000000#define EPS 1e-6typedef long long LL;const double PI = acos(-1.0);inline int s...
阅读全文
HDU4712Hamming Distance随机化算法
摘要:Hamming DistanceTime Limit: 6000/3000 MS (Java/Others)Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 736Accepted Submission(s): 252 Problem Description(From wikipedia) For binary strings a and b the Hamming distance is equal to the number of ones in a XOR b. For calculating Hamming d
阅读全文
HDU1258Sum It Up
摘要:Sum It UpTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 3129Accepted Submission(s): 1578 Problem DescriptionGiven a specified total t and a list of n integers, find all distinct sums using numbers from the list that add up to t. For example, if t
阅读全文
HDU1016数字排列搜索
摘要:Prime Ring ProblemTime Limit: 4000/2000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 20363Accepted Submission(s): 9115 Problem DescriptionA ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle separately, and the sum of
阅读全文
HDU2141还是二分查找
摘要:Can you find it?Time Limit: 10000/3000 MS (Java/Others)Memory Limit: 32768/10000 K (Java/Others) Total Submission(s): 7898Accepted Submission(s): 2052 Problem DescriptionGive you three sequences of numbers A, B, C, then we give you a number X. Now you need to calculate if you can find the three numb
阅读全文
HDU1253胜利大逃亡
摘要:bfs和剪枝胜利大逃亡Time Limit: 4000/2000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 21195Accepted Submission(s): 8381 Problem DescriptionIgnatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会.魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0,0,0)的位置,离开城堡的门在(A-1,B-1,C-1)的位置,现在知
阅读全文
HDU1175连连看 广度优先搜索BFS
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 using namespace std ; 15 #ifdef DeBUG 16 #define bug assert 17 #else 18 #define bug // 19 #endif 20 #define zero {0} 21 int dir...
阅读全文
HDUOJ2298三分加二分
摘要:首先这题是一道物理题,需要我们根据题意抽象一个函数出来。对物体的运动作分解后,可以得到:f(t)=x*tan(t)-g*x*x/(v*cos(t))^2/2,其中t表示v与x轴正向的夹角(弧度),f(t)表示物体的运动轨迹与直线x0=x的交点纵坐标。分析后可以得到该函数在区间(0,π/2)上先增后减,所以我们可以在该区间上三分,求出使函数取得极大值的角度t0。若f(t0)#include#includeusing namespace std;const double eps=1.0e-9;const double PI=acos(-1.0);const double g=9.8;double
阅读全文
HDUOJ PIE二分查找
摘要:#include #include #include #include #include #include #include #include #include #include#includeusing namespace std ;#ifdef DeBUG#define bug assert#else#define bug //#endif#define eps 1e-6int m,n;double pie[11000];bool test(double x)//判断是否每个都分成出x体积大的蛋糕的块数>=人数,=人数那最好了^_^{int sum=0;for(int i=0;i=(
阅读全文
HDUoj 3714三分查找
摘要:#include #include #include #include #include #include #include #include #include #include#includeusing namespace std ;#ifdef DeBUG#define bug assert#else#define bug //#endif#define eps 1e-10double a[10010],b[10010],c[10010];int m;inline double f(double x){int i;double maxx=a[0]*x*x+b[0]*x+c[0];for(i
阅读全文
HDUOJ 1728逃离迷宫dp剪枝
摘要:#include using namespace std;#define inf 0x3fffffff#define M 105//1、wan用于转弯数剪枝;2、step用于步数剪枝,就不用vis标记访问了int r, c, ex, ey, k, wan[M][M];char mapp[M][M];int x_move[4] = {-1, 0, 1, 0};int y_move[4] = {0, 1, 0, -1};bool flag;int times=0;/*void showmap(int x,int y)//用这个可以打印出来研究{int i,j;printf("******
阅读全文
HDUOJ 2553n皇后问题
摘要:N皇后问题Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5382Accepted Submission(s): 2454Problem Description在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Outpu
阅读全文
POJ 1088 滑雪 记忆化搜索
摘要:#include using namespace std;int row ,col;int matrix[105][105]={0};// 保存原始数据int cnt[105][105]={0}; // 记录每一个点的最大滑雪长度int DP(int i, int j){int max = 0;// 如果已经处理过,直接返回(记忆化搜索效率之所以高的原因:不重复计算)if (cnt[i][j] > 0) {return cnt[i][j];}// 以下四块语句,只对合法的i和j,进行递归(递归的重点就是:剪去所有不合法的,只处理所有合法的!!!)if (j-1 >= 0){if (
阅读全文