
遍历搜索
文章平均质量分 74
jchalex
善待人,严做事,无节操
展开
-
poj - 1154 - LETTERS
题意:R行S列的格子中填满大写字母,问从左上角的格子开始走,每次只能或上或下或左或右移动一格且那个格子的字母不能走过,最多能走几步。题目链接:http://poj.org/problem?id=1154——>>直接dfs。#include #include using namespace std;const int maxn = 20 + 10;int R, S, ret;原创 2013-05-20 19:32:40 · 1082 阅读 · 0 评论 -
poj - 1330 - Nearest Common Ancestors
题意,一棵有N个结点的有根树,询问一次两个给定结点的最近公共祖先(T组测试数据,2题目链接:http://poj.org/problem?id=1330——>>LCS, LCP, 一直不知道还有个LCA(最近公共祖先)。。。这题因为询问只有一次,只需用上简单实现的LCA,不需用上离线的Tarjan这把牛刀。。。1.求出各结点的深度;2.让询问的两结点的深度达到相同(深度大的原创 2013-09-26 21:14:26 · 979 阅读 · 0 评论 -
poj - 1470 - Closest Common Ancestors
题意:一棵n个结点的有根树,求一些结点对的最近公共祖先,输出各个结点作为公共祖先的次数(正数)(n 题目链接:http://poj.org/problem?id=1470——>>明写着的LCA题目。。。第一次,不大理解离线算法,打了个lca[][]的表,限时2s。。。1313ms飘过。。。想清楚离线思路后,用邻接表把询问的结点对先存起来,不打表。。。438msA掉。。。离线写法:原创 2013-09-28 20:08:31 · 878 阅读 · 0 评论 -
hdu - 3260 - Facer is learning to swim(dfs)
题意:一个泳池,纵切面是形成一个由N*M个小方格组成的矩形,一个机器人初始时在(1,1),它要游到(1, M),其水平速度为1(恒定),竖直速度为v(可变),至少每K秒到达水面换一次氧气,每个小方格可有变速器vT(会使v + T),也可事先在任意方格放一个speedo,其大小为Q(-1, 0, 1三个数中选一个)(会使v + Q),vT和Q可同时存在,另外,方格可能会有钱,当机器人到达时,它可获得原创 2013-10-14 13:13:08 · 1359 阅读 · 0 评论 -
zoj - 3631 - Watashi's BG(dfs)
题意:N天钱序列,最大报销额为M,对于其中的一天可选择报不不报,问最多能报销多少钱。(每天的钱不可拆分)(1 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3631——>>背包呀,不过要优化,寒假时优化到160ms,今天重刷,优化到了80ms,痛快!优化思想:1、从大到小排序;2、到了最大报销原创 2013-05-27 12:58:25 · 1051 阅读 · 0 评论 -
poj - 3740 - Easy Finding(精确覆盖DLX)
题意:M行N列,各元素值要么是0,要么是1,问是否可以取出其中的一些行,使取出的行组合中每列有且仅有一个1。题目链接:http://poj.org/problem?id=3740——>>寒假时刷这题费了超大精力,现在再刷一次,理解起来快多了。思想:用位运算来加速。row[i]表示第i行的二进制移位编号,第i行就将1左移i位。col[i]表示第j列在哪些行的值为1,哪些行的值为0原创 2013-05-17 16:06:12 · 1108 阅读 · 0 评论 -
zoj - 3209 - Treasure Map(精确覆盖DLX)
题意:一个 n x m 的矩形(1 题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3372——>>这是精确覆盖问题,而DLX正是解决精确覆盖问题的有利武器。。 模型转换:将原矩形变成一行,作为 DLX 中的列,表示要被覆盖一次且仅一次的目标。子矩形则是行中的一些点,每个子矩形作为 DLX 的一行原创 2014-10-30 15:06:30 · 920 阅读 · 0 评论 -
hdu - 4979 - A simple math problem.(可重复覆盖DLX + 打表)
题意:一种彩票共有 N 个号码,每注包含 M 个号码,如果至少有 R 个号码与开出来的 M 个号码相同,则中二等奖,问要保证中二等奖至少要买多少注(1题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4979——>>覆盖问题,yy可知是可重复覆盖问题,于是,DLX 上场。。 N个 选 R 个,共有 C[N][R] 种选法,每种选法需原创 2014-10-31 02:04:42 · 1632 阅读 · 0 评论 -
hust - 1017 - Exact cover(精确覆盖DLX)
题意:N行M列的0 1矩阵,求选出其中的一些行,使得选出的这些行每列有原创 2014-10-30 11:04:17 · 808 阅读 · 1 评论 -
hdu - 3498 - whosyourdaddy(重复覆盖DLX)
题意:N(2 ≤ N ≤ 55)个点,M(0 ≤ M ≤ N*N)条无向边,删除一个点会把与其相邻的点一起删掉,问最少删几次可以删掉所有点。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3498——>>N个点看成 N 个要被覆盖的列,每个点作为一行,与其相邻的点的位置在这一行中标为 1,还有它自已的位置也标记为 1。。这就是经典的重复覆盖原创 2014-10-30 18:04:30 · 1306 阅读 · 0 评论 -
hdu - 4403 - A very hard Aoshu problem(dp + dfs + map + 乘法原理)
题意:给出一串数字字符(长度在[2, 15]),现要在其中加一个 "=",不加或加一些 "+",问成立的等式有多少条?题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4403——>>数据量较小,暴力吧。。1、dp预处理出任意两个字符间的数值大小2、枚举 = 的位置,分别对 = 的左边、右边各dfs一次,并记录各个数出现的次数3、根据原创 2014-11-22 21:52:01 · 1147 阅读 · 0 评论 -
poj - 2169 - Kingdom of Magic
题意 :n个点,m条边,无向图,有两个人开始在两个相邻的点,他们要去到另一对相邻的点,每一步后,他们的位置必须相邻,问最少需要走多少步(2人的总步数)(1-2,不能立刻2-1,即不相互走同一条路)(3 题目链接:http://poj.org/problem?id=2169——>>直接bfs。#include #include #include using namespace s原创 2013-08-31 23:57:49 · 1123 阅读 · 0 评论 -
hdu - 4665 - Unshuffle
题意:给出一个长度为n平方串(由2个相同序列相互插入(但不改变同一序列的相对顺序)而成),输出串中的元素归属于第几个原串(组成平方串的串)(n 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4665——>>dfs(int cur, int last, int R),cur为目前已搜索到的对数,last为搜索到的第一个序列的上一个元素的位置,R原创 2013-08-12 18:37:28 · 996 阅读 · 0 评论 -
hdu - 1010 - Tempter of the Bone
题意:一个N*M的地图,走过的点不能再走,X为墙不可走,能否从点S到点D恰好用时T。(1 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1010——>>有点邯郸学步的感觉,寒假时用cin输入数据,轻松AC,后来慢慢改成了用scanf来输入,今天,这道坑爹的题目交了n次也是WA,代替了n种方式后发现,是输入的问题,猜想是输入的地图有空格……原创 2013-05-23 15:47:29 · 856 阅读 · 0 评论 -
hdu - 1241 - Oil Deposits
题意:一个m*n的地图,其中的格子要么是*,要么是@,对于@,横、竖、斜连着的成为一个块,问总共有多个@块。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1241——>>重刷寒假简单搜索题,还是不会用scanf或者getchar输入,失败。#include #include #include using namespace std原创 2013-05-24 13:30:04 · 1196 阅读 · 0 评论 -
poj - 1077 - Eight
题意:八数码问题,对于给定的初始态,求出到达目标态的路径。题目链接:http://poj.org/problem?id=1077——>>上ACM课的,老师讲的例题,看老师的代码看不明白;寒假看白书,轻松AC,今天重刷一次,竟将目标状态写多了一个9,debug了好久。这也是我所做的第一道哈希题;对于一个八数码图,对应着一个状态,那么总共会有9!个状态,近40万个, 可以将这些状态对应哈希原创 2013-05-26 22:13:41 · 1851 阅读 · 1 评论 -
hdu - 1312 - Red and Black
题意:求一个H*W的地图中一指定的起点的连通的黑色格子有多少个。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1312——>>简单dfs。#include using namespace std;const int maxn = 20 + 10;char MAP[maxn][maxn];int W, H, sx, sy, cn原创 2013-05-26 10:07:40 · 963 阅读 · 0 评论 -
poj - 1020 - Anniversary Cake
题意:给出n个小正方形,问能否将这n个小正方形拼成一个边长为s的大正方形(不可重叠,不可留空)(小正方形的边长[1, 10], 1 题目链接:http://poj.org/problem?id=1020——>>好题,好题,题意是如此的平常,却不容易做……在小正方形的面积和 == 大正方形的面积的前提下,每次先填最凹的地方,看能否能填完n个小正方形。#include #includ原创 2013-05-28 10:31:07 · 1606 阅读 · 0 评论 -
poj - 1426 - Find The Multiple
题意:求n的一个倍数m,m的十进制表示的每一位要不为0,要么为1。(1 题目链接:http://poj.org/problem?id=1426——>>这题的数据可能不是那么的严,可以用long long水过。寒假时bfs过#include #include using namespace std;void bfs(int n, long long &s){ qu原创 2013-05-28 16:51:12 · 1374 阅读 · 0 评论 -
poj - 3126 - Prime Path
题意:从一个四位素数变到另一个四位素数,每次只能改到一个位的数字,且改动后仍是一个四位素数,问最少需要几步。题目链接:http://poj.org/problem?id=3126——>>直接广搜。#include #include #include using namespace std;const int maxn = 9999 + 10;int MAP[maxn],原创 2013-05-28 13:00:18 · 927 阅读 · 0 评论 -
hdu - 1026 - Ignatius and the Princess I
题意:一个N*M的图,一秒内可上下左右选个方向走一步,一进去,若有数字,就要花数字大小的时间停留在那个格子,输出从起点(0, 0)到终点(N-1, M-1)每一秒的路径。题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1026——>>会选择优先队列来做就基本上没问题了。#include #include #include #inclu原创 2013-05-30 13:44:50 · 888 阅读 · 0 评论 -
hdu - 4631 - Sad Love Story
题意:一个空平面,每次增加一个点,其坐标根据上一个点算出:(x[i-1] * Ax + Bx ) mod Cx,(y[i-1] * Ay + By ) mod Cy求出现有点集中的最近点对的距离的平方,共增加n个点,求每次求得的平方的和( n 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4631——>>时间给得挺长的,20s,不过暴力求原创 2013-07-31 02:05:45 · 1777 阅读 · 0 评论 -
hdu - 4607 - Park Visit
题意:N个城市形成一棵树,相邻城市之间的距离是1,问游K个城市的最短路程是多少,共有M次询问(1 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4607——>>把这棵树拉直,得最长路(直径)共有maxd个城市,如果K maxd,贪心策略为最长路一定要从头走到尾,中间补上缺少的城市,每补一个,距离+2,结果是maxd - 1 + (K - m原创 2013-07-24 20:02:44 · 1400 阅读 · 0 评论 -
poj - 1321 - 棋盘问题
题意:在一个n*n的棋盘上放k个棋子有几种放法。(n 题目链接:http://poj.org/problem?id=1321——>>和八皇后问题很像,只是这里不用每行都有,简单回溯。#include #include using namespace std;const int maxn = 10;int cnt, n, k;char MAP[maxn][maxn];bo原创 2013-05-17 01:09:08 · 3523 阅读 · 3 评论