摘要: 原来做过的一道题,有敲了一遍,就是个丑数。两种思路:①最官方的解法:用dp思想如果一个数是Humble Number,那么它的2倍,3倍,5倍,7倍仍然是Humble Number定义a为第i个Humble Numbera[n]=min(2*a[i1],3*a[i2],5*a[i3],7*a[i4]), i1,i2,i3,i4在被选择后相互移动View Code #include <stdio.h>#define N 5843__int64 min(__int64 a, __int64 b){ return a < b ? a : b;}__int64 hnum[N];int 阅读全文
posted @ 2011-11-27 19:47 1050768624 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 简单DP,状态转移公式:num[j].data = max{num[j].data, num[j].data+num[j-1].data},也就是保证加上前一个数不失自己的值减小。View Code #include <stdio.h>#define N 100010#define inf 9999999struct _num{ int data; int pre; int next;}num[N];int main(){ int i, j, k, n, m, max; scanf("%d", &n); for(i=1;i<=n;i++) { .. 阅读全文
posted @ 2011-11-27 19:16 1050768624 阅读(152) 评论(0) 推荐(0) 编辑