上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 24 下一页
摘要: /*树状数组,归并排序*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <a 阅读全文
posted @ 2011-04-12 21:53 AC2012 阅读(146) 评论(0) 推荐(0) 编辑
摘要: /*DP此题的方程是 DP[i][j],i是左下标,j是右下标DP[i][j] 表示从i到j的字符串需要加多少个字符才能使其成为回文串if( in[i]==in[j] ) DP[i][j] = DP[i+1][j-1];else DP[i][j] = MIN(DP[i+1][j],DP[i][j-1])+1;但是此题的内存要求很小,DP[N][N]行不通。从方程中可以看出,i只和i+1有关,所以可以使用滚动数组起初我使用的mod = 3的滚动。按照长度来进行DP的,这样两层的滚动不够,因为除了当前和减一,还有减二的情况所以,需要三层还有一种构造滚动数组的方法是:不使用长度来进行DP,而是使用下 阅读全文
posted @ 2011-04-12 18:38 AC2012 阅读(142) 评论(0) 推荐(0) 编辑
摘要: // include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorithm># 阅读全文
posted @ 2011-04-12 16:34 AC2012 阅读(150) 评论(0) 推荐(0) 编辑
摘要: /*起初我实现的DP比较慢,原因是我忽略了一个很重要的事实,那就是所有的砝码都必须用上,这就是说,每一个砝码都会出现的,既然如果,不管放的顺序是什么,都可以看成从第一个开始放,然后第二个,然后第三个。这个发现可以帮助我们消去一个循环现在说下我的最初的DP: DP[i][j][k], 到第i时,差为j,选择k个的个数DP[i+1][j+(i+1号砝码所有可能的放置)][k+1] += DP[i][j][k],很显然这里当k<i的这种情况在以后是用不到的。试想如果出现了DP[i][j][i-1],也就是说少了第i个砝码,以后还会在添加进去吗?不会了,因为砝码就是我的阶段。所以这纯粹是浪费时间 阅读全文
posted @ 2011-04-12 15:58 AC2012 阅读(259) 评论(0) 推荐(0) 编辑
摘要: /*DP好题,再次回顾此题,感慨颇多*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#includ 阅读全文
posted @ 2011-04-12 11:18 AC2012 阅读(230) 评论(0) 推荐(0) 编辑
摘要: /*DP30组数据50000个数,绝对值小于10000最大连续子段和问题*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include < 阅读全文
posted @ 2011-04-12 10:30 AC2012 阅读(195) 评论(0) 推荐(0) 编辑
摘要: /*DP 坐标是对称的原则这个题目出了要深刻理解DP外,还要知道蜘蛛侠游走时候的规律,震荡是对称的。从一个建筑的左边一点到右边一点的纵坐标是相等的。这样的话,蜘蛛侠从起点开始所有的转折点出的纵坐标都和开始的时候一样。DP[i][j],表示对于建筑物i,合法的横坐标j,此时的最小swing次数(因为纵坐标不变,不考虑了);*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#inclu 阅读全文
posted @ 2011-04-12 09:48 AC2012 阅读(155) 评论(0) 推荐(0) 编辑
摘要: /*DP这是个很有趣的DP问题状态的设计是这样子的 f[i][j][2];f[i][j][0] 表示吃完i到j之间所有的草,并且最后吃i,整体腐烂度的最小值f[i][j][1] 表示吃完i到j之间所有的草,并且最后吃j, 整体腐烂度的最小值我们要求 f[1][n][0] 和 f[1][n][1],那么如何得到呢f[i][j][0] = min( f[i+1][j][0]+dst[i][i+1]*(i+n-j),f[i+1][j][1]+dst[i][j]*(i+n-j) );f[i][j][1] = min( f[i][j-1][0]+dst[i][j]*(i+n-j),f[i][j-1][1 阅读全文
posted @ 2011-04-11 23:44 AC2012 阅读(230) 评论(0) 推荐(0) 编辑
摘要: /*DP*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include <algorith 阅读全文
posted @ 2011-04-11 21:09 AC2012 阅读(179) 评论(0) 推荐(0) 编辑
摘要: /*DP,应该说还是比较简单的*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#include & 阅读全文
posted @ 2011-04-11 20:08 AC2012 阅读(242) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 24 下一页