hdu 1208 记忆化搜索】的更多相关文章

题目大意:只能按照格子上的数字*方向走,从左上走到右下Sample Input42331121312313110Sample Output3 直接记忆化搜索,注意是0的情况 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<map> using…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4722 思路:简单的记忆化搜索,留意一下A==0时的情况就可以了. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; ]; ll dp[][]; ll dfs(int pos,int…
² 博弈取牌—记忆化搜索 题目描述: 有两副带有数字的牌,(数字>0)两人轮流取,取中了某张牌,自己的分数就加上牌上的数字,但只能从两端取,每人都会用最优的策略使得自己的分数最高.问A先取,他能得到的最高的分数. 解法: 记忆化搜索,对于第一.二副牌的左右端点分别为fr1,ta1, fr2,的情形,某个人能拿到的分数的最大值这次取走牌fr1,ta1,fr2,ta2中的最大值,牌的数目减1,问题规模被缩小.边界条件为当没有牌时为0.因为两个人都是这么思考,可抽象成一个人.当总分数为sum时,我能得…
题意是给4堆(堆的高度小于等于40)有颜色(颜色的种类小于等于20)的物品,你有一个篮子最多能装5件物品,每次从这4堆物品里面任取一件物品放进篮子里,但是取每堆物品时,必须先取上面的物品,才能取下面的物品,如果发现篮子里的两种物品的颜色一样,那么把这两种物品拿出来,问最后最多能拿出多少对物品?:解题思路:记忆化搜索+dp+状态压缩:因为40×40×40×40不会太大,所以可以用dp[x[1]][x[2]][x[3]][x[4]]记录搜索的状态:dp[x[1]][x[2]][x[3]][x[4]]…
Another OCD Patient Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 490    Accepted Submission(s): 180 Problem Description    Xiaoji is an OCD (obsessive-compulsive disorder) patient. This mo…
/* 记忆化搜索,第二维判断是否是6 */ #include<stdio.h> #include<string.h> #define N 9 int dp[N][2],digit[N]; int dfs(int len,int cnt,int ok) {//cnt代表是否是6,ok代表前一个是当前为最大值,并且当前也是最大值 if(!len)return 1; if(!ok&&dp[len][cnt]!=-1)return dp[len][cnt]; int i,a…
好久没有做题了,水平已经完全在学弟之下了. 一个吉林邀请赛最水的题目.:( 其实这题一看到数据范围,只可以想到思路,直接爆搜,加个记忆化. 这题虽然A了,但是我还是没太想清楚一些边界情况,心虚着A了. 我的代码如下: /************************************************************************* > File Name: 4597.c > Author: Stomach_ache > Mail: 1179998621@…
Y - How many ways Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1978 Appoint description: Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m).游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标有的能量. 2.机器…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1078 //dp[i][j]表示从点i,j处开始能获得的最多cheese #include <iostream> #include <string.h> #include <stdio.h> using namespace std; int n,k,dp[101][101],map[101][101]; int dfs(int a,int b){ if(dp[a][b]) r…
注意: dp[i][j] 表示(i,j)这个点有多少种方式       mark[i][j]表示这个点是否走过  假设有直接返回dp[i][j]    dp的求法为全部梦走到点的dp的和 注意mark開始的标记 #include<stdio.h> #include<string.h> #include<iostream> using namespace std; int dp],n,m; int dfs(int x,int y) { int i,j; if(mark[x…