随笔分类 - 动态规划
摘要:题目大意:就是说两个人交换选一些数,如果a,b被选过了,那么k*a+m*b(k,m >=0 )这样的数就不能再被选择,现在给你一些还没有选的数,问选哪个数可以使你必胜如样例:2 5如果你选2,由于3已经选过了,而2+3=5,所以5也不能备选择。所以选2就为必胜的选择我的思路:,这道题的最初要想到的就是,由于题目的给的数的范围很小,<=20。所以表示这些数的集合就可以用二进制模拟。用一个DP数组就可以存下,他有两个值就是0和1,表示必胜和必输两个状态。详见代码: 1 #include <cstdio> 2 #include <cstring> 3 #inclu
阅读全文
摘要:是在分类为DP里找的题目,可是解题时。。。。貌似没用到=.=!水过:用数组d[401]记录每个房间前的走廊被用过多少次,则答案即为d[i]*10;每扫描一个点将数组这个范围内的值加1,注意,范围的确定,若下限为偶数,则下限需减一,若上限为奇数,则上限需加1,例如,s=4,t=7时,房间4到房间7之间的走廊都要占用,而房间4前的走廊与房间3之间的走廊是一样的,房间7与房间8之间的走廊也是一样的,所以要扩大数组的更新范围为[3,8]。 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm>
阅读全文
摘要:DescriptionGiven a two-dimensional array of positive and negative integers, a sub-rectangle is any contiguous sub-array of size 1*1 or greater located within the whole array. The sum of a rectangle is the sum of all the elements in that rectangle. In this problem the sub-rectangle with the largest s
阅读全文
摘要:分类是DP,可是却用暴力枚举过了,继续找思路。。。下面是纯暴力: 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #include <iostream> 5 #define MAX(a,b) (a) > (b)? (a):(b) 6 #define MIN(a,b) (a) < (b)? (a):(b) 7 #define mem(a) mem(a,0,sizeof(a)) 8 #define INF 1000000007 9 #define MAXN
阅读全文
摘要:转自百度文库http://wenku.baidu.com/view/98287f0c844769eae009edf9.html[1]POJ动态规划题目列表容易:1018,1050,1083,1088,1125,1143,1157,1163,1178,1179,1189,1208,1276,1322,1414,1456,1458,1609,1644,1664,1690,1699,1740(博弈),1742,1887,1926(马尔科夫矩阵,求平衡),1936,1952,1953,1958,1959,1962,1975,1989,2018,2029,2039,2063,2081,2082,2181
阅读全文
摘要:空间里有n个点P0,P1,P2... ...,Pn-1,你的任务是把他们配成n/2对(n是偶数),使得每个点恰好在一个点对中。所有点的距离之和应该尽量小。n<=20. 定义状态d[i][S]为前i个点中,位于集合S的元素两两配对的最小距离,则状态转移方程就是 d(i,S) = min{|Pi,Pj| + d(i-1, S-{i}-{j})}其中|PiPj|表示两点之间的距离。边界是d(-1,S) = 0代码实现: 1 for(int i = 0;i < n;i ++ ) 2 { 3 for(int S = 0; S < (1<<n); S ++ ) 4 ...
阅读全文
摘要:一个n*m的矩阵由n行m列共n*m排列而成。两个矩阵A和B可以相乘当且仅当A的列数等于B的行数。一个n*m的矩阵乘m*p的矩阵,运算量为n*m*p。 矩阵乘法不满足分配律,但满足结合律。因此A*B*C既可以按顺序(A*B)*C也可以按A*(B*C)来进行。假设A、B、C分别是2*3、3*4、4*5的,则(A*B)*C运算量是2*3*4+2*4*5=64,A*(B*C)的运算量是3*4*5*2*3*5=90.显然第一种顺序节省运算量。 给出n个矩阵组成的序列,设计一种方法把他们依次乘起来,使得总的运算量尽量小。假设第i个矩阵A[i]是P[i-1]*P[i]的。输入32 3 4 5输...
阅读全文
摘要:POJ3624Charm Bracelet(01背包)01背包看看《背包九讲》第一讲就没问题。http://wenku.baidu.com/view/e5fd2015b7360b4c2e3f6416.htmlView Code 1 #include<stdio.h> 2 int d[3405],w[3405]; 3 int n,m; 4 int ZeroOnePack() //01背包解法 5 { 6 int f[13000]={0},i,j; 7 for( i=1; i<=n ; i++ ) 8 { 9 for( j...
阅读全文