题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1429题目大意:最短时间内出迷宫,可以走回头路,迷宫内有不同的门,对应不同的钥匙。解题思路:要是没有门和钥匙,而且不能走回头路,就是个简单粗暴的BFS。有了门之后,就要状态压缩+记忆化搜索。不然这个图会搜...
分类:
其他好文 时间:
2014-10-15 14:50:00
阅读次数:
168
UVA 1557 - Calendar Game题目链接题意:给定一个日期,两个人轮流走,每次能够走一月或者一天,问最后谁能走到2001.11.4这个日子思路:记忆化搜索,对于每一个日期,假设下两个状态有一个非必胜态,那么这个状态是必胜态,假设后继状态都是必胜态,那么该状态为必败态代码:#inclu...
分类:
其他好文 时间:
2014-10-13 19:45:27
阅读次数:
146
这题目意思能忍?读了半年,乱七八糟的
记忆化搜索 拖拖的,dp[i][0]代表以获得最小值为目标的船以i为起点,dp[i][1]代表以获得最大值为目标的船以i为起点,接下来暴力枚举入度为0的点为起点,开始记忆化搜索,
const int N = 100000 + 55;
int dp[N][2];
int value[N];
int degree[N];
vector G[N];
...
分类:
其他好文 时间:
2014-10-13 01:00:53
阅读次数:
258
概率dp,一开始用了二维超时,后来加了一位记忆化就不超时了啊。dp[x][y][z]代表已经覆盖了第x行y列此时还剩下k个空格。
所以:dp[x][y][z] = p1*dp[x+1][y][z-1]+p2*dp[x][y+1][z-1]+p3*dp[x+1][y+1][z-1]+p4*dp[x][y][z-1] + 1。
Domination
Time Limit: 8 Secon...
分类:
其他好文 时间:
2014-10-12 21:20:08
阅读次数:
244
题意:有n个向量(0
思路:先确定一点,对于选出的k个向量,按斜率从大到小的顺序摆放,面积最大。(不然会损失几个平行四边形的面积) 然后DP , DP[id][cur][height] 分别表示前id个向量,已经选出了cur个向量,高度为height的最大面积。面积计算公式为 x0*y0 + 2*x1*y0+x1*y1 + 2*x2*(y0+y1)........用记忆化搜索注意初始化的优化...
分类:
其他好文 时间:
2014-10-11 13:36:55
阅读次数:
173
UVA 810 - A Dicey Problem
题目链接
题意:一个骰子,给你顶面和前面,在一个起点,每次能移动到周围4格,为-1,或顶面和该位置数字一样,那么问题来了,骰子能不能走一圈回到原地,输出路径,要求最短,如果有多个最短,按照上下左右输出
思路:读懂题就是水题,就记忆化搜一下即可,记录状态为位置和骰子顶面,正面(因为有两面就能确定骰子了)
代码:
#in...
分类:
其他好文 时间:
2014-10-10 21:21:24
阅读次数:
323
题目又一道可以称之为dp的题目,虽然看了别人的代码,但是我的代码写的还是很挫,,,,,,//看了题解做的简单的记忆化dp#include#include#includeusing namespace std;int mp[110][110],dp[110][110];int xx[]={1,-1,0...
分类:
其他好文 时间:
2014-10-09 02:59:17
阅读次数:
265
首先,我们要tarjan。。。 然后我们要缩点。。。注意,缩点的时候两个新建的点会有重边,需要判重正常的判重方法是bfs一边,但是我YY的比较奇葩,方法下面将。。。缩好点就变成了一个DAG,然后就类似树形DP的方法求最大权值链我是用记忆化搜索,当dfs某个点p时用数组vis记录一些东西:首先vis[...
分类:
其他好文 时间:
2014-10-06 23:54:12
阅读次数:
333
题目大意:让你找出二维数组上的最长不上升子序列思路:曾几何时在TYVJ上写过这题!!那时觉得无从下手,如今也能半小时不看discuss写出来了,看来两年来的确有所进步类似于一维的LIS,二维情况下f(I,j)=max(f(x,y)+1)|x,y为i,j的四个方向的拓展,直接搜显然超时,用个数组记录下...
分类:
其他好文 时间:
2014-10-05 15:47:48
阅读次数:
169
/*
数位dp,记忆化搜索写法
注意memset(dp,-1,sizeof(dp))是放在外面的,这样保证每次搜索时存的值满足下一次也可以用;
如果放在里面就会超时
每个长度有10000种状态
*/
#include
#include
#define N 20
int len,digit[N],dp[N][10000];
int dfs(int len,int cnt,int ok) {
...
分类:
其他好文 时间:
2014-10-03 20:21:05
阅读次数:
157