2012年9月21日

Function Run Fun poj 1579

摘要: 题意:把一个递归方程改为迭代的写法。题解:三重循环迭代递推。AC代码:View Code 1 #include<cstdio> 2 const int N=25; 3 int a,b,c,dp[N][N][N]; 4 int solve(){ 5 if(a<=0||b<=0||c<=0)return 1; 6 if(a>20||b>20||c>20)a=b=c=20; 7 for(int i=0;i<=a;i++) 8 for(int j=0;j<=b;j++) 9 for(int k=0;k<=c;k++){10 ... 阅读全文

posted @ 2012-09-21 21:30 Acmer_Roney 阅读(151) 评论(0) 推荐(0) 编辑

Zipper poj 2192

摘要: 题意:给你三个字符串,问你能否由前两个合成第三个,且要求不改变前两个字符串的顺序。题目保证第三个字符串的长度为前两个字符串的长度之和。题解:此题用暴力,深搜都可以过(数据太水)。这里给出DP的解法。dp[i][j](bool 型)代表第一个字符串的前i个字符和第二个字符串的前j个字符能否合成第三个字符串的前i+j个字符串。则状态转移方程为:1 if(dp[i-1][j]&&s1[i]==sum[i+j]||dp[i][j-1]&&s2[j]==sum[i+j])2 dp[i][j]=true;对于状态方程的解释:1.若第一个字符串的前i-1个字符和第二个字符串前 阅读全文

posted @ 2012-09-21 20:06 Acmer_Roney 阅读(259) 评论(0) 推荐(0) 编辑

How to Type HDU 2557

摘要: 题意:给你一串字符串,只包含大写字母和小写字母,问打出这串字符最少要按多少次键。但如果Caps Lock键最后是打开的一定要把Caps Lock键关掉。题解:首先你要知道1.当Caps Lock键关闭的时候打出一个大写字母可以有两种方法:1.按下Caps Lock键再按字母键 2.按Shift键并按字母键。2.当Caps Lock键打开的时候打出一个小写字母也有两种方法:1.按下Caps Lock键,再按字母键 2.按Shift键并按字母键。 题目涉及Caps Lock键的两种状态:关闭和打开。因此可以开一个二维数组,一维表示Caps Lock键关闭,另一维表示Caps Lock键打开。但这里 阅读全文

posted @ 2012-09-21 16:27 Acmer_Roney 阅读(337) 评论(0) 推荐(0) 编辑

Worm HDU 2151

摘要: 题意:有N棵树,一条毛毛虫一分钟会从一棵树上爬到相邻的另一棵树上。问你毛毛虫从起始位置P经过M分钟后爬到T棵树一共有多少种方法。(树从1到N编号)。题解:DP。状态转移方程:dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];dp[i][j]表示在第i分从P爬到树j的方法总数。这个状态转移方程很好理解,只要注意一下边界的处理和初始化就好了。具体见代码~AC代码:View Code 1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<algorithm& 阅读全文

posted @ 2012-09-21 15:03 Acmer_Roney 阅读(278) 评论(0) 推荐(0) 编辑

Apple Catching POJ 2385

摘要: 题意:有两棵苹果树,标号分别为1,2。每分钟有其中的一棵树会掉下一个苹果,奶牛一分钟只能在其中一棵树下接到苹果,但她不知道下一分钟会是那棵树掉下苹果,所以她就要在两棵树下来回跑。但她只会在树下跑W次。问你在T分钟内,奶牛bessie最多能接到多少苹果。题解:一道简单的DP。先给出状态转移方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+count。这里的dp[i][j]代表在第i分钟移动j次最多能接到的苹果数。在第i分钟奶牛到某棵树下有两种状态:1.从另一棵树走过来(dp[i-1][j-1])2.本来就呆在这棵树下(dp[i-1][j])。所以在第i分钟时能接到 阅读全文

posted @ 2012-09-21 11:24 Acmer_Roney 阅读(996) 评论(0) 推荐(0) 编辑

导航