上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 24 下一页
摘要: /*题意就是找等差数列,最少等差数列个数深度挖掘信息,这个等差数列必须满的。我所谓的满,是指这个数列不能在0到59之间在找一个了而且必须有两个,那么第一个数值必须小于30了,否则等差小于30,然后就可以在之前在找一个了通过这样,可以把所有的等差数列描述出来为了搜索的更快,按照等差数列的大小从大到小排列在搜索的过程中,及时找出下限,如果下限仍然大于最优解,那么就舍去此题如果不加强剪枝,还真不好过。按照节点个数递减的顺序搜索,也是不错的选择。*/// include file#include <cstdio>#include <cstdlib>#include <cs 阅读全文
posted @ 2011-04-22 10:24 AC2012 阅读(180) 评论(0) 推荐(0) 编辑
摘要: /*贪心,和1700很相似这题上次在URAL的一次比赛中碰到了,一直过不去,不知道贪的怎么不对现在又碰大了,原理是最小的一对人交替的来传递棒,但是又个地方需要特别注意就是最大的一对中的较小的和最小的一对较大的比较的话,如果等于了,那么就必须小最小的和最大的传了这个例子 5 6 6 7 很清楚如果按照那个方法是 6 5 7 6 6 = 30但是最好的方法是 7 5 6 5 6 = 29,好好想想这个,挺有意思的错了,应该是d[0]+d[i-1]>=2*d[1]成立的时候才行*/// include file#include <cstdio>#include <cstdli 阅读全文
posted @ 2011-04-21 13:31 AC2012 阅读(144) 评论(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 <algori 阅读全文
posted @ 2011-04-21 00:51 AC2012 阅读(158) 评论(0) 推荐(0) 编辑
摘要: /*DP[i][j],以i结尾j个火车头的最大载人数DP[i][3] = max(DP[i][3],DP[i-M][2]+DP[i][1],DP[i-1][3]); DP[i][2] = max(DP[i][2],DP[i-M][1]+DP[i][1],DP[i-1][2]);DP[i][1] = max(DP[i][1],DP[i-1][1]);*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cc 阅读全文
posted @ 2011-04-21 00:22 AC2012 阅读(188) 评论(0) 推荐(0) 编辑
摘要: /*DP问题问题是这样子的,最多100个物品,每个物品有两个属性,这是一个特别的DP问题,虽然明显看起来像是01背包,但是似乎又无法下手,想到了二维的DP,但是状态为DP[i][200000][200000],不仅开不出来,而且速度也不行,转化一下发现,可以把其中一个限制条件转化为价值,另外一个当代价,因为最后求的是这两个限制条件的和。所以可以这样来做。思路也很巧妙这也给我们一个教训,01背包要活学活用,限制条件可以适当转化DP[i][cost],当一个限制条件是 cost时的最大值value.最后求cost+value的最大值即可,当然要求cost和value都必须大于0*/// inclu 阅读全文
posted @ 2011-04-20 23:09 AC2012 阅读(412) 评论(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-20 18:30 AC2012 阅读(146) 评论(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 <algo 阅读全文
posted @ 2011-04-20 18:18 AC2012 阅读(121) 评论(0) 推荐(0) 编辑
摘要: /*p = (a+b+c)/2;S^2 = p*(p-a)*(p-b)*(p-c)这些包可以形成所有的可行边长DP问题。二维的DP背包问题,对于二维的01背包的理解,可以从一维的开始理解一维01背包的方程是 DP[k] = max(DP[k],DP[k-代价]+价值);,这里DP方程意思是说,代价为K时的最大价值二维01背包的方程是 DP[k1][k2] = max(DP[k1][k2],DP[k1-代价][k2]+价值,DP[k1][k2-代价]+价值);,这里DP方程是说,代价为k1和k2时的最大价值当然对于多维,DP在加一位就是了。这里唯一区别的地方是,每个物品只能在一个背包中,所以如果 阅读全文
posted @ 2011-04-20 17:23 AC2012 阅读(737) 评论(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-20 00:34 AC2012 阅读(521) 评论(0) 推荐(0) 编辑
摘要: /*DP问题T分钱,可以由最少的硬币数组成*/// include file#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <cctype>#include <ctime>#include <iostream>#include <sstream>#include <fstream>#include <iomanip>#include <bitset>#inc 阅读全文
posted @ 2011-04-19 22:29 AC2012 阅读(186) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 24 下一页