算法设计-递归求解
文章平均质量分 69
JeraKrs
本人目前就职于百度商业研发部,有需要内推的朋友简历可发我邮箱 jerakrs@qq.com
展开
-
uva 10795 - A Different Task(递归)
题目链接:uva 10795 - A Different Task题目大意:就是普通的汉诺tai原创 2013-12-07 17:20:41 · 1218 阅读 · 0 评论 -
hdu 5355 Cake(回溯)
题目链接:hdu 5355 Cake每次扣掉2m,直到n小于40,再用回溯暴力出方案。#pragma comment(linker, "/STACK:102400000,102400000")#include #include #include #include using namespace std;const int maxn = 50;typedef原创 2015-08-07 19:09:27 · 649 阅读 · 0 评论 -
hdu 5225 Tom and permutation(回溯)
题目链接:hdu 5225 Tom and permutation#include #include #include using namespace std;typedef long long ll;const int maxn = 100;const int mod = 1e9+7;int N, ans, V[maxn + 5], A[maxn + 5];ll原创 2015-07-29 00:17:10 · 1073 阅读 · 0 评论 -
hdu 5323 Solve this interesting problem(dfs)
题目链接:hdu 5323 Solve this interesting problem逆向思维,每次向左或向右翻倍,知道左端点为0时,即恰好满足的情况,处理处所有情况去取最小值。#include #include #include using namespace std;typedef long long ll;const ll inf = 0x3f3f3f3原创 2015-07-28 20:58:48 · 952 阅读 · 0 评论 -
uva 1462 - Fuzzy Google Suggest(字典树+dfs)
题目链接:uva 1462 - Fuzzy Google Suggest题目大意:模拟google的模糊搜索,给定给一个字符串集合,然后有n次搜索,每次有一个整数x和一个字符串,表示可以对字符串进行x次修改,包括增加、修改和删除一个字符,问修改后的字符可能是字符集中有多少个字符串的前缀。解题思路:先建立字典树,对于每次搜索,在字典树上进行dfs,根据参数x和字符串匹配的位置进行处理原创 2014-09-04 22:11:33 · 1517 阅读 · 0 评论 -
hdu 4911 Inversion(归并)
题目链接:hdu 4911 Inversion题目大意:给定一个序列,有k次机会交换相邻两个位置的数,问说最后序列的逆序对数最少为多少。解题思路:每交换一次一定可以减少一个逆序对,所以问题转换成如何求逆序对数。#include #include #include using namespace std;typedef long long ll;const int m原创 2014-08-05 22:26:37 · 1005 阅读 · 0 评论 -
uva 690 - Pipeline Scheduling(dfs+剪枝)
题目链接:uva 690 - Pipeline Scheduling题目大意:有10个任务,5个管道,每个任务需要占用不同时间的管道,给出任务所占用管道的时间,求最短需要多少时间。解题思路:dfs+剪枝,剪枝1,将所有可以的相对位置记录。剪枝2,当当前开销加上剩余任务的最有情况仍大于ans。#include #include #include usi原创 2014-04-10 07:03:07 · 3461 阅读 · 2 评论 -
uva 1548 - The Game of Master-Mind(dfs+剪枝)
题目链接:uva 1548 - The Game of Master-Mind题目大意:现在ACM公司要开发一个手游,游戏大致为猜数字,一开始给出p,c和m,p为要猜数字的个数,c为每个数字的最大上限,m为已经猜过的次数,每次猜完系统会给出相应的回复提示,所以接下来有2*m行为前m次的提示。每组提示分两行,一行是当前猜的数字分别有哪些,一行是代表说黑点个数和白点个数,所谓黑点个数即原创 2014-04-08 07:09:18 · 1506 阅读 · 0 评论 -
Codeforces 392B Tower of Hanoi(递归+记忆化搜索)
题目链接:Codeforces 392B Tower of Hanoi题目大意:给出一个3*3的矩阵,表示从i移动到j的代价,现在给出n,表示有n个碟子在1柱,需要移动到3柱,要求给出最小的花费。解题思路:dp[l][r][n],表示的是从l移动n个碟子到r的最小花费,然后总共有两种移动方式:ans1 = solve(l, x, n-1) + solve(x, r, n原创 2014-02-19 14:59:52 · 1577 阅读 · 1 评论 -
Codeforces 388A Fox and Box Accumulation(贪心)
题目链接:Codeforces 388A Fox and Box Accumulation题目大意:给出n个箱子,每个箱子告诉你说最多可以在这个箱子上面放几个箱子,问说最少需要垒多少落。解题思路:x最大才105,用一个cnt数组记录下每种箱子的个数,然后从最小的开始一直往上加,直到不能加为止。#include #include #include usin原创 2014-02-08 12:45:17 · 1779 阅读 · 0 评论 -
uva 656 - Optimal Programs(递归)
题目链接:uva 656 - Optimal Programs题目大意:给出两个序列,要求找出一个函数f(x) = y,xi与yi分别对应两个序列中的第i个元素,输出函数的操作步骤,要求最短,且按照字典序输出。解题思路:递归枚举x0到y0的可能步骤,然后判断其他是否全部满足。#include #include #include using namespa原创 2013-12-25 22:37:49 · 1437 阅读 · 0 评论 -
uva 10479 - The Hendrie Sequence(规律+递归)
题目链接:10479 - The Hendrie Sequence题目大意:有一个序列,由0开始变换,0->1,非0数k变成0,0,0...(k-1个0),k+1。现在给出n,问第n个元素是什么。解题思路:看别人找的规律,将串分成长度为1,1,2,4,8原创 2014-01-08 15:23:16 · 1733 阅读 · 0 评论 -
uva 11127 - Triple-Free Binary Strings(回溯)
题目链接:uva 11127 - Triple-Free Binary Strings题目大意:给出一个串,有0,1,*,然后*的位置可以填0或1,问组成的串中不存在连续三个子串相同的串的个数。解题思路:递归求解,可以剪枝对与当前位置,如果前面的构成已经有存在连续的三个子串相同,可以直接return。#include #include const int原创 2014-01-06 19:07:56 · 1533 阅读 · 6 评论 -
uva 798 - Tile Puzzle(回溯)
题目链接:uva 798 - Tile Puzzle题目大意:给出w,h和n,表示有n种拼图,给出n种拼图的个数mi,宽wi,高hi,问说用这些拼图可以用多少中不同的方法拼凑出w*h。解题思路:回溯法,注意拼图的宽如果不等于长的话,是可以旋转的。#include #include const int N = 20;const int M = 105;i原创 2014-01-01 15:54:25 · 1835 阅读 · 0 评论 -
uva 1374 - Power Calculus(迭代深搜)
题目链接:uva 1374 - Power Calculus题目大意:给出n,问说至少计算几步得到x^n。解题思路:迭代深搜,枚举步数,然后深搜判断是否可行。需要优化,当当前数s按照最大方案执行后仍然小于n,则说明不可行。#include #include #include const int N = 3005;int aid, tmp, v[N],原创 2013-12-28 21:17:02 · 2167 阅读 · 1 评论 -
fzu 2038 Another Postman Problem(递归求解)
题目链接:fzu 2038 Another Postman Problem题目大意:给出n, 然后给出n - 1条边,保证图联通,计算每个点到其他所有点的路径总和的和。解题思路:一开始想到Floyd算法求出所有点点之间的最短路,但是o(n^3)的复杂度太高了;后来想到说用枚举起点后直接用BFS去计算距离,可是o(n^2)还是超时。后来灵光一闪,发现可以枚举每条边走过的次数,原创 2013-12-11 20:31:58 · 1298 阅读 · 2 评论 -
hdu 5468 Puzzled Elena(前缀性质+dfs序+容斥)
题目链接:hdu 5468 Puzzled Elena解题思路预处理出每个数的因子(注意只需要质因子幂数最大为1的数,例如6=21∗316=2^1 * 3^1)然后用一个数组维护,fac[i]表示说当前有fac[i]个数包含i这个因子。然后dfs遍历这棵树,第一次遍历到节点u时,通过fac数组计算出现在有多少个数与W[u]不互质,待遍历完u的子树后,再计算一次,两个相减即为u子树中与W[u]不互质的原创 2015-09-30 16:17:50 · 883 阅读 · 0 评论