环状合并石子问题。环状无非是第n个要和第1个相邻。可以复制该行石子到原来那行的右边即可达到目的。定义:dp[i][j]代表从第i堆合并至第j堆所要消耗的最小体力。转移方程:dp[i][j]=min(dp[i][k]+dp[k+1][j]+sum[i][j]);复杂度:O(n^3)。可考虑四边形优化。...
分类:
其他好文 时间:
2014-06-02 20:34:03
阅读次数:
226
混合三种背包问题。定义:dp[i][k]表示体积为k的时候,在前i堆里拿到的最大价值。第一类,至少选一项,dp初值全赋为负无穷,这样才能保证不会出现都不选的情况。dp[i][k]
= max(dp[i][k],max(dp[i-1][k-c]+g,dp[i][k-c]))其中:dp[i][k]是不选...
分类:
其他好文 时间:
2014-06-02 20:32:13
阅读次数:
238
单调队列优化DP。定义dp[i][j]表示第i天手中有j股股票时,获得的最多钱数。转移方程有:1.当天不买也不卖:
dp[i][j]=dp[i-1][j];2.当天买了j-k股: dp[i][j]=max(dp[r][k]+(j-k)*Ap[i]);
(r=1,所以i>w+1时才能转移,这是i#in...
分类:
其他好文 时间:
2014-06-02 20:03:15
阅读次数:
191
题意:即求给定n个数字(a1,a2,……an),不改变序列,分成M份,使每一份和的乘积最大。思路:dp[i][j]表示把前i个数字,分成j份所能得到的最大乘积。转移方程:dp[i][j]
= max{ dp[k][i-1]*sum(k+1,j) } 其中显然j#include #include #i...
分类:
其他好文 时间:
2014-06-02 19:58:45
阅读次数:
242
1.Problem DescriptionGiven a sequence
a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a
sub-sequence. For example, given (6,-1,5,4,-...
分类:
其他好文 时间:
2014-06-02 17:36:53
阅读次数:
234
题意:在给定的数组里,寻找一个最长的序列,满足ai-2+ai-1=ai。并输出这个序列。很容易想到一个DP方程dp[i][j]=max(dp[k][i])+1.
(a[k]+a[i]==a[j],1=dp[1][5]。这样我们只需要在遍历数组的时候维护数组每个数的最大的下标即可。这里使用hash来做...
分类:
其他好文 时间:
2014-06-02 00:39:39
阅读次数:
379
publicclassA01{
/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
intsum=0;
intnum=2;
while(num<=100){
sum+=num;
num+=2;
}
System.out.println(sum);
}
}
分类:
编程语言 时间:
2014-06-01 16:35:36
阅读次数:
552
最大m子段和问题 Max Sum Plus Plus —— 动态规划...
分类:
其他好文 时间:
2014-06-01 16:18:49
阅读次数:
259
剪枝的概念极大极小过程是先生成与/或树,然后再计算各节点的估值,这种生成节点和计算估值相分离的方式,需生成规定深度内的所有节点,搜索效率较低。
如果能边生成节点边对节点估值,并剪去一些没用的分枝,这种技术被称为α-β剪枝。剪枝方法(1) MAX节点(或节点)的α值为当前子节点的最大到推值;(2)
M...
分类:
其他好文 时间:
2014-06-01 12:32:00
阅读次数:
552
type node1=record go,next:longint;end; node2=record
l,r,mx,sum:longint;end;var i,x,y,n,q,tmp,cnt,sz,code:longint; ch,st:string;
fa:a...
分类:
其他好文 时间:
2014-06-01 11:45:18
阅读次数:
374