随笔分类 -  DP

DP
HDU1087
摘要:1 /*记忆化dfs+dp,因为每次最多走k步,所以上下左右的方向有所扩展, 2 dp[i][j]存的是从dp[i][j]出发能吃的最大个数*/ 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxn=110; 8 int map[maxn][maxn],vis[maxn][maxn]; 9 int dp[maxn][maxn];//dp[i][j]表示从i,j出的最大蛋糕数目10 int n,m,k;11 void init()12 {13 memset(dp,0,sizeof(dp));14... 阅读全文

posted @ 2013-08-20 00:00 ok_boy 阅读(346) 评论(0) 推荐(0)

HDU1978How Many Ways 记忆化dfs+dp
摘要:1 /*记忆化dfs+dp 2 dp[i][j]代表达到这个点的所有路的条数,那么所有到达终点的路的总数就是这dp[1][1]加上所有他所能到达的点的 3 所有路的总数 4 */ 5 6 #include 7 #include 8 #include 9 using namespace std;10 const int maxn=110;11 int map[maxn][maxn],vis[maxn][maxn];12 int dp[maxn][maxn];13 int n,m;14 int ok(int x,int y)15 {16 if(x>=1 && x=1 & 阅读全文

posted @ 2013-08-19 23:59 ok_boy 阅读(232) 评论(0) 推荐(0)

HDU1160FatMouse's Speed
摘要:1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 const int maxn=1010; 8 struct point 9 { 10 int w,s,per,id; 11 }p[maxn]; 12 int cmp(point a,point b) 13 { 14 return a.s>b.s; 15 } 16 int dp[maxn]; 17 int main() 18 { 19 int i,j,k,n,m; 20 n=1; 21 ... 阅读全文

posted @ 2013-08-19 01:54 ok_boy 阅读(278) 评论(0) 推荐(0)

SDUT OJ 2607
摘要:1 /*http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2607*/ 2 题目大意:给出一个字符串,求出里面为山字形的子序列,比如1 2 1,给出的字符串都是 3 小写字母组成,大小按照码值判断,问里面有几个这样的子序列,保证长度大于等三,且中点左右必须至少有一个字符。注意:相同的两个算两个 4 比如acca算aca和aca两个,其中c的下标分别为1和2。 5 解法:既然是左边递增右边递减,那么我们左右都求一次递增子序列的个数,然后相乘就是相加就是所有的组合数 6 因为字母只有26个,那么时间 阅读全文

posted @ 2013-08-14 15:07 ok_boy 阅读(471) 评论(0) 推荐(0)

导航