搜索
team79
我在努力。
展开
-
LeetCode 126. Word Ladder II
一个广搜完事,写了半天const int MAX_N = 40000;struct Edge { int to, next;};struct Node { int index, step; vectorstring> v;};int head[MAX_N], tot;Edge edge[MAX_N * 8];mapstring, int> mp;m原创 2018-01-16 23:47:53 · 184 阅读 · 0 评论 -
Lightoj 1073 数位DP+深搜
这一题,开始自己想的时候,是想要先处理下字符串,判断下两两合成一个字符串的时候的最小字符串,但是这样处理了之后就没有头绪了,最后参考了别人的思路。别人的思路如下:1.首先判断一下是否有字符串是其他字符串的字串,若有则取掉。2.计算将a与b合成一个字符串且b在前的时候,需要在a之前添加字母的最少个数increase[a][b] 比如 a = “abcdef” b=“mnbabc” 则原创 2013-12-26 20:37:25 · 1147 阅读 · 0 评论 -
Lightoj 1049 DFS
很容易推出如果是五向边,那么这些构成环,现在就是要找怎么改变一些边的方向使之在有向图的时候也构成环,显然只需要对一个方向进行搜索,找相反方向边的权值和。然后再与另一方向的进行比较(通过sum来减直接求得),即可得出答案。AC代码如下:#include #include #include #include using namespace std;int weight[101][1原创 2013-12-29 08:33:00 · 755 阅读 · 0 评论 -
Lightoj 1009 BFS
用到二分图的的一个定理:就是二分图一定能用两种颜色来着色。。。然后搜一下就行AC代码如下:#include #include #include #include #include using namespace std;typedef struct{ int to; int next;}Edge;typedef struct{ int n, tag;}Node;原创 2013-12-29 09:52:02 · 1176 阅读 · 0 评论 -
hdu 2611 DFS
日!AC代码如下:#include #include #include #include #include using namespace std;#define MAX 0x3f3f3f3fstruct Node{ int num, index;};int N, P, cnt, record[110];Node nodes[110];int cmp( co原创 2014-02-16 14:53:30 · 683 阅读 · 0 评论 -
hdu 2234 IDA*
都是泪。h_row()是求让行相等的最少步h_col()是求让列相等的最少步然后神奇的是:if( h_col() + deep //************ //*********}这样是不行的int tempp = min( h_col(), h_row() );if( tempp + deep //******* //******}而这个才是正确的。。。。次奥原创 2014-02-18 13:17:48 · 693 阅读 · 0 评论 -
hdu 1560 IDA*
开一个数组来记录当前枚举出的字符串已经包含了每个所给的字符串多少个字符了然后h函数为 每个所给字符串未包含的字符数的 最大值AC代码如下:#include #include #include #include using namespace std;#define MAX 0x3f3f3f3fchar s[10][10];int N;int length[10],原创 2014-02-18 15:22:57 · 721 阅读 · 0 评论 -
hdu 2918 IDA*
每次maxdeep没有初始化,WA了一下午AC代码如下:#include #include #include #include #include using namespace std;int num[3][3];int pos[][2] = { { 0, 0 }, { 0, 1 }, { 0, 2 }, { 1, 0 }, { 1, 1 }, { 1, 2 }, { 2,原创 2014-03-06 15:39:54 · 707 阅读 · 0 评论 -
hdu 1181 DFS
深搜AC代码如下:#include #include #include #include using namespace std;struct Edge{ int to, next;};Edge edge[10000];int head[30], tot;bool mark[30];int add_edge( int a, int b ){ edg原创 2014-03-07 12:26:18 · 636 阅读 · 0 评论 -
hdu 1180 BFS
注意一点的是可以停留,但实际上是在第一次到达时选择停留还是不停留,这样是一个剪枝AC代码如下:#include #include #include #include #include using namespace std;struct Node{ int x, y; int step;};char maps[22][22];int M, N;Nod原创 2014-03-07 16:42:49 · 566 阅读 · 0 评论 -
zoj March 2014 月赛
被虐哭了T_T一下午才搞出了两题B题 超水的题。。。。。但是。。。。。一开始想多了。。。。。。悲剧了好久。。。。暴力就能过E题怎么想呢首先预处理下,两点是否是在一条平行线上,然后就是要找出有多少颗树,然后用总点数减树的个数。为什么是这样呢?首先,如果能够连成一颗树的话,可以从叶子向根来打球,这样最后只有根不能被打出去。。。。。。这样有多少颗树就有多少个球不能被打出去原创 2014-03-02 18:54:22 · 773 阅读 · 0 评论 -
poj 3635 搜索+优先队列
一定要用优先队列。。。。。TLE了一上午了。。。。。。AC代码如下:#include #include #include #include #include #include using namespace std;#define MAX 0x3f3f3f3fstruct Node{ int sum_cost; int pos; int v; bool oper原创 2014-01-11 10:56:18 · 738 阅读 · 0 评论 -
hdu 3681 二分枚举答案+dp判断答案
一开始以为是搜索,然后不知道怎么办了。。。那么多状态。。。因为那个夏天的风的分类是在搜索里面,最后看了解题报说是dp。。。。。思路:先用BFS搜出Y与G,G与F,F与Y的距离,然后就用二分枚举答案,用dp来判断答案是否能行。dp就是一个TSP问题。。。。我写的时候有一个地方要注意,就是dp判断里面结束的判断。。。一开始用的是〉~~的。。最后发现这样不行。。。。因为如果一个power原创 2014-01-10 21:26:23 · 770 阅读 · 0 评论 -
hdu 1548 BFS
水水的BFS,但是开始的时候把判断放在了输入得前面 WA了无数次。。。。。真是神志不清。。。。。AC代码如下:#include #include #include #include using namespace std;typedef struct{ int location; int step;}Node;int N, A, B;int maps[210];bo原创 2013-09-14 20:23:40 · 724 阅读 · 0 评论 -
hdu 4740 搜索
模拟下就行。。。。。。。下午的时候在每次改变方向后没改变tf和df的值。。。。。这人生该是有多艰难。。。。。。T_T#include#include #include using namespace std;const int MAX_SIZE=1000+10;int n;int tx,ty,tf;int dx,dy,df;int rd[MAX_SIZE][MAX_SI原创 2013-09-15 19:36:50 · 932 阅读 · 0 评论 -
Lightoj 1046 广搜
用多次广搜来搜索每一个骑士所能到的砖块以及到达该砖块所需的最小步数,并记录保存,最后求和即可AC代码如下:#include #include #include #include #include #include using namespace std;#define MAX 0x3f3f3f3ftypedef struct{ int x, y; int step;原创 2013-12-26 21:44:13 · 1094 阅读 · 0 评论 -
Lightoj 1141 BFS
注意是质素因子。。。。。AC代码如下:#include #include #include #include #include #include using namespace std;#define MAX 0x3f3f3f3ftypedef struct{ int step; int now;}Node;int s, t;bool prime[1010]原创 2013-10-29 19:48:33 · 710 阅读 · 0 评论 -
hdu 1685 IDA*
IDA*一直不会啊。。。。估价函数一直不会找啊。。。。。这题就的估价函数求得就是原创 2014-08-24 14:50:44 · 772 阅读 · 0 评论 -
hdu 2258 BFS
方法就是暴力。。。。都是泪。。。。我记得当时有个地方写搓了。。。。。找了半天。。。辛亏原创 2014-08-24 11:55:59 · 675 阅读 · 0 评论 -
hdu 3459 IDA*
IDA* AC代码如下:#include #include #include #include using namespace std;char maps[10][10];int maxdeep;char ans[100];int get_h(){ int cnt = 0; if( maps[2][0] != maps[3][0] || maps[2原创 2014-03-24 21:44:13 · 945 阅读 · 0 评论 -
poj 1240 DFS
不知道为什么分到DP分类里面去了,(pos1,pos2)表示一颗子数的前序遍历 (pos3,pos4)表示该颗子数的后序遍历 然后可以将该子树分成更小的子树,直到pos1==pos2每次的种类数就是 子树的种类树相乘*C( M,子树个数)AC代码如下:#include #include #include #include using namespace std;c原创 2014-03-24 15:33:29 · 760 阅读 · 0 评论 -
hdu 4012 状态压缩BFS
大致就是用BFS搜索所有情况,每次找到 当前状态下所能框住的最多多少个同类的字母,然后将这些标记并入当前状态,存入队列。最后表示状态的时候状态压缩就行。。。。话说这题做的时候有个坑。。。。当时初始化的时候 sizeof()里面写成了false而不是mark 哎。。。。混混成成的果然是天坑啊 啊啊啊啊啊啊,找了一晚上的bugAC代码如下:#include #include原创 2013-09-15 21:50:38 · 1380 阅读 · 0 评论 -
hdu 4739 DFS
暴力搜索。。。。。。。其实可以直接排序后找多少组正方形就可以。。。。但是不知道为什么,不知道是数据弱还是怎么的。。。。AC代码如下:#include #include #include #include using namespace std;#define MAX_SIZE 120typedef struct{ int x, y;}Point;int number原创 2013-09-15 19:17:46 · 857 阅读 · 0 评论 -
Lightoj 1094 DFS
DFS 搜索下经过每个点的最大长度就行。。。。AC代码如下:#include #include #include #include using namespace std;typedef struct{ int to; int weight; int next;}Edge;int head[40010], tot;Edge edge[70010];int N;原创 2013-10-29 18:28:25 · 609 阅读 · 0 评论 -
poj 2044 DFS
AC代码如下:#include #include #include #include #include using namespace std;struct Node{ int a, b, c, d;};int statu[366];int N;int moves[][2] = { { 0, 0 }, { 1, 0 }, { -1, 0 }, { 0, 1 }, {原创 2014-01-11 15:17:33 · 873 阅读 · 0 评论 -
hdu 1667 IDA*
第一道IDA*。。。。。。给链接:点击打开链接AC代码如下:#include #include #include #include using namespace std;int num[7][7];int maxdeep;char record[1000];bool check(){ int temp = num[2][2]; for( int i = 2;原创 2014-02-18 08:46:17 · 710 阅读 · 0 评论 -
poj 2138 DFS
首先预处理,哪些字符串是可以互相到达的还有一点要注意的是,如果一个都找不出来,就输出原单词AC代码如下:#include #include #include #include using namespace std;struct Edge{ int to, next;};char s[1100][100];int N;Edge edge[400000];原创 2014-02-26 16:36:06 · 795 阅读 · 0 评论 -
poj 1088 DFS+记忆化搜索
开始用的BFS。。。超时。。。。AC代码如下:#include #include #include #include #include using namespace std;struct Node{ int x, y; int h; bool operator<( const Node &b )const{ return h < b.h; }};int M原创 2014-01-18 09:17:08 · 678 阅读 · 0 评论 -
hdu 1813 IDA*
h()为当前所有点到边界的最小步数的 最大值要用bfs预处理下每个点到边界的最小距离,只就用直线距离会错AC代码如下:#include #include #include #include #include #include using namespace std;#define MAX 0x3f3f3f3fstruct Point{ int x, y;}原创 2014-02-19 09:41:24 · 775 阅读 · 0 评论 -
hdu 1732 BFS
这题直接搜索就行,在搜索的时候 人走一次,如果要推箱子,则推一下箱子,然后判断新的状态是否能够存在并且是否之前出现过。。。。。。然后就AC了。。。。第一次觉得自己的代码很写的很漂亮。。。。。。真的,真心喜欢自己这次写的代码。。。。。。。。么么哒AC代码如下:#include #include #include #include #include using namespace原创 2013-09-16 16:38:30 · 854 阅读 · 0 评论 -
A* 算法入门
转自:http://www.cppblog.com/mythit/archive/2009/04/19/80492.html在看下面这篇文章之前,先介绍几个理论知识,有助于理解A*算法。 启发式搜索:启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无畏的搜索路径,提到了效率。在启发式搜索中,对位置的估价是十分重要转载 2013-09-17 20:56:23 · 892 阅读 · 0 评论 -
hdu 3085 双向BFS
有个地方要注意,代码中有注释。AC代码如下:#include #include #include #include #include #include using namespace std;int N, M;bool visit[2][801][801];int maps[801][801];int gx, gy, mx, my;int z[2][2];int原创 2013-09-14 10:54:21 · 709 阅读 · 0 评论 -
hdu 1043 BFS
这题从结果开始往后搜,并且搜的时候要注意,记录状态的时候u变成d,l变成r,然后记录一下这些状态,最后输出的时候倒置一下就行,一直很纳闷,那个打表在我的电脑上至少用了10s,但是到杭电上1400ms就ac了,不知道为什么。。。。。。。。。。AC代码如下:#include #include #include #include #include #include #include原创 2013-09-14 08:28:21 · 732 阅读 · 0 评论 -
hdu 1026 BFS
输出这么蛋疼的一道题我竟然一遍就过了!!!!!!!爽啊!!!!!!!!!!!!!!!!!AC代码如下:#include #include #include #include using namespace std;typedef struct{ int x, y; int time;}Point;int map[100][100];int mark[100][10原创 2013-07-11 14:29:58 · 907 阅读 · 0 评论 -
hdu 1016 DFS
经典的搜索AC代码如下:#include #include #include #include #include using namespace std;int n;int num[21];int mark[21];int now;bool judge( int n ){ if( n == 1 || n == 0 ){ return false; } do原创 2013-07-15 12:42:44 · 576 阅读 · 0 评论 -
hdu 1226 BFS
一开始想着要写大数好麻烦啊。。。最后看了别人的代码瞬间觉得自己弱爆了。。。。。。值得以后学习。。。AC代码如下:#include #include #include #include #include using namespace std;int number[16];int visit[5100], flag;int N, C, M;string ans;typ原创 2013-07-18 15:04:27 · 675 阅读 · 0 评论 -
hdu 1885 BFS + 二进制压缩
#include #include #include #include using namespace std;typedef struct{ int x, y; int state;}Point;char map[150][150];int moves[][2] = { 0, 1, 0, -1, 1, 0, -1, 0 };int step[1<<7][150][150原创 2013-07-18 13:39:40 · 614 阅读 · 0 评论 -
hdu 1429 BDF+二进制状态压缩
#include #include #include #include using namespace std;typedef struct{ int x, y; int state;}Point;char map[25][25];int moves[][2] = { 0, 1, 0, -1, 1, 0, -1, 0 };int step[1<<12][25][25];原创 2013-07-18 12:49:51 · 732 阅读 · 0 评论 -
hdu 1728 BFS
这题有一个细节要注意。。。在代码中有提示。。。开始的时候没注意一直WAAC代码如下:#include #include #include #include using namespace std;typedef struct{ int x, y; int derect; int num;}Point;int moves[][2] = { -1, 0, 0, 1, 1原创 2013-07-11 20:23:10 · 667 阅读 · 0 评论 -
poj 1176
谁说是搜索来着。。。直接枚举就过了。。。#include #include #include #include using namespace std;int f[101];int last[101];int temp[101];int N, C;vector vec;void turn1(){ for( int i = 1; i <= N; i++ ){ tem原创 2013-07-14 10:57:49 · 662 阅读 · 0 评论