首页 > 编程知识 正文

hdu5984,3584*768什么像素

时间:2023-05-03 13:53:53 阅读:33463 作者:407

最大内存限制:2000/1000 ms (Java/others )内存限制336065536/32768 k (Java/others ) ) )。

总订阅(s ) : 24332接受订阅(s ) : 8356

problemdescriptionnowithinkyouhavegotanacinignatius.l ' s ' max sum ' problem.tobeabraveacmer,wealwayschallengeourselvesevestter

genaconsecutivenumbersequences 1,S 2,S 3,s4.sx, sn (1xn1,000,000,- 32768 ) . wx32767

nowgivenanintegerm(m0 ),yourtaskistofindmpairsofiandjwhichmakesum ) I1,j 1 ) sum ) I2,j 2 ) sum ) I3,j 3 ).sum ) ii

But I`m lazy,id on ' twanttowriteaspecial-judge module,soyou don ' thavetooutputmpairsofiandj,justoutputhemaximalsumatiandi

inputeachtestcasewillbeginwithtwointegersmandn,followed by n integers S 1,S 2,S3.sn。

文件结束时处理。

outputoutputthemaximalsummationdescribedaboveinoneline。

样品输入1312326-14-23-23

Sample Output 68 Hint Huge input,scanfanddynamicprogrammingisrecommended .题意:给出带n个元素的数组,将其分成m个字段,求字段和最大值。 (字段之间不能交叉。)。 dp[i][j]的前j个是足以满足I个字段的最大值。 dp[i]与前面的数字构成I个字段,或独立成为一个字段。 方程: DP[j]=max(DP[j-1]a[j],pre[j-1] a[j] )代码: # include stdio.h # includealgorithmusingnamespacespase int pre[MAXN 10]; int a[MAXN 10]; int main () { int n,m; int i,j,MAX; wile (扫描(' % d % d ),m,n )!=eof(/m为分钟的场数,n序列中的要素数) for ) I=1; i=n; I ) Scanf('%d ',a[i]; pre[i]=0; dp[i]=0; } dp[0]=0; pre[0]=0; for(I=1; i=m; I ) ) { MAX=-INF; for(j=I; j=n; j ) {DP[j]=max(DP[j-1]a[j],pre[j-1] a[j] );//第j个元素是一个字段pre[j-1]=MAX,其中,前面的元素与第I个子段或第j个元素相组合; //更新由pre[j-1]表示第一个j-1元素的最大子段和if(DP[j]max ) MAX=dp[j]; }printf('%dn ',MAX ); }返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。