ACM_动态规划
i_fuqiang
这个作者很懒,什么都没留下…
展开
-
HDU 1257 最少拦截系统 (动态规划)
/*动态规划之路第二题;求最长非递增数列条数;*/#includeint main(){ int n,i,j,x,m,dp[1005]; while(scanf("%d",&n)!=EOF&&n) { dp[1]=0;m=0; //m代表最长递减序列个数 //dp[i]代表第i个最长递减序列中当前状态的所含元素最小值原创 2013-03-30 20:46:11 · 3725 阅读 · 0 评论 -
HDU 2084 树塔
//这算是一个历史遗留问题吧;//一直没有去尝试做动态规划的题目//说道理,就是像是心里有种恐惧//因为听说。。。听说动态规划很难//所以就连这入门的都没敢去AC//今天开始,深入看看吧。。。//菜鸟~~~#include #include #include #include #include #include #include int ta[1原创 2013-03-30 12:38:32 · 705 阅读 · 0 评论 -
HDU 1160 动态规划
/* 动态规划的第三题了;一个小小细节,想了一天了,对比别人代码终于发现了;*/#include #include #include #include #include #include #include using namespace std;struct mouse{ int w; int v; int num;}mice[1005];int dp[1原创 2013-04-01 19:38:58 · 878 阅读 · 0 评论 -
HDU 1159 最长公共子序列
最初写法: dp[0][0] = s1[0]==s2[0]?1:0; for(int j = 1; j < len2; j++) { if(s1[0]==s2[j]) dp[0][j] = 1; else dp[0][j] = max(dp[0][j],dp[0][j-1]); } for(int i = 1; i原创 2013-04-07 20:37:03 · 714 阅读 · 0 评论 -
HDU 1069
/*真伤心,学的好慢啊;脑子越来越笨了,根本转不过来;回寝室去啦~~~还需继续努力啊!*///一个长方体 衍生出3个; 对总的进行排序;保证s[i].x>s[i+1].x 如果相等,则保证s[i].y>s[i+1].y;//状态转移方程:dp[i] = max{dp[j]} + s[i].h;#include #include #include #include #in原创 2013-04-09 22:48:14 · 1965 阅读 · 0 评论 -
HDU 1058 Humble Numbers
状态转移方程:num[p] = min(num[i]*2,num[j]*3,num[k]*5,num[l]*7);#include #include #include #include #include #include #include #define maxn 5900int num[maxn];char _th[][11] ={"th","st","nd","原创 2013-04-09 18:12:22 · 659 阅读 · 0 评论 -
HDU 1176 免费馅饼
坐标规划型动态规划题目描述:开始的位置是5;有0。1。2。。。9。10这11个点位置;馅饼的掉落位置在这11个位置中,gameboy只能接到方圆1单位的馅饼;(移动一个单位需要一秒)给出各个时间点T,馅饼掉落的位置;求最多接到多少个馅饼;(注意开始点是5);状态转移方程:dp[i][j] += max(dp[i+1][j],dp[i+1][j+1],dp[i+1][原创 2013-04-11 19:44:34 · 630 阅读 · 0 评论 -
poj 2184 背包变形
/* 有关这个问题画了太多时间了; 对自己真的很失望,思维能力太差了; 庆幸的是自己坚持看懂了; 希望下次碰到能够灵活运用;*/题目其实可以转换成背包问题;由于数据是-100000~100000;所以我们取数组 dp[100000*2];我们产生一个相对坐标的概念,100000相对坐标为0;99995相对坐原创 2013-04-15 21:05:31 · 872 阅读 · 0 评论