• 区间Dp uva10755


    <h1 style="MARGIN-BOTTOM: 0px; FONT-FAMILY: 'times new roman'; FONT-VARIANT: normal; WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT-STYLE: normal; LETTER-SPACING: normal; LINE-HEIGHT: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">Garbage Heap</span></h1><div class="constraints" style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">Time limit: ? seconds</span></div><div class="constraints" style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">Memory limit: 64 megabytes</span></div><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">Farmer John has a heap of garbage formed in a rectangular parallelepiped.</span></p><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">It consists of<span> </span><img class="mathimg" alt="$A	imes B	imes C$" src="http://uva.onlinejudge.org/external/107/p107551.png" width="85" height="13" /><span> </span>garbage pieces each of which has a value. The value of a piece may be 0, if the piece is neither profitable nor harmful, and may be negative which means that the piece is not just unprofitable, but even harmful (for environment).</span></p><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;"></span></p><center style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;"><img src="http://uva.onlinejudge.org/external/107/p10755_1.png" alt="" /></span></center><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">The farmer thinks that he has too much harmful garbage, so he wants to decrease the heap size, leaving a rectangular nonempty parallelepiped of smaller size cut of the original heap to maximize the sum of the values of the garbage pieces in it. You have to find the optimal parallelepiped value. (Actually, if any smaller parallelepiped has value less than the original one, the farmer will leave the original parallelepiped).</span></p><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;"></span></p><h2 style="MARGIN-BOTTOM: 0px; FONT-FAMILY: 'times new roman'; FONT-VARIANT: normal; WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT-STYLE: normal; LETTER-SPACING: normal; LINE-HEIGHT: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">Input</span></h2><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">The first line of the input contains the number of the test cases, which is at most 15. The descriptions of the test cases follow. The first line of a test case description contains three integers<span> </span><span class="math">A</span>,<span> </span><span class="math">B</span>, and<span> </span><span class="math">C</span><span> </span>(<span class="math"><span class="number">1</span><span> </span>≤ A<span class="number">,</span><span> </span>B<span class="number">,</span><span> </span>C ≤<span> </span><span class="number">2</span><span class="number">0</span></span>). The next lines contain<span> </span><img class="mathimg" alt="$Acdot Bcdot C$" src="http://uva.onlinejudge.org/external/107/p107552.png" width="67" height="13" /><span> </span>numbers, which are the values of garbage pieces. Each number does not exceed<span> </span><img class="mathimg" alt="$2^{31}$" src="http://uva.onlinejudge.org/external/107/p107553.png" width="21" height="16" /><span> </span>by absolute value. If we introduce coordinates in the parallelepiped such that the cell in one corner is<span> </span><span class="math"><span class="number">(</span><span class="number">1</span><span class="number">,</span><span class="number">1</span><span class="number">,</span><span class="number">1</span><span class="number">)</span></span><span> </span>and the cell in the opposite corner is<span> </span><span class="math"><span class="number">(</span>A<span class="number">,</span>B<span class="number">,</span>C<span class="number">)</span></span>, then the values are listed in the order</span></p><center style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;"><img class="mathimg" alt="$$
    egin{gathered}
    (1,1,1),(1,1,2),dots,(1,1,C),\
    (1,2,1),dots,(1,2,C),dots,
    (1,B,C),\
    (2,1,1),dots,(2,B,C),dots,(A,B,C).
    end{gathered}
    $$" src="http://uva.onlinejudge.org/external/107/p107554.png" width="282" height="74" /></span></center><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">The test cases are separated by blank lines.</span></p><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;"></span></p><h2 style="MARGIN-BOTTOM: 0px; FONT-FAMILY: 'times new roman'; FONT-VARIANT: normal; WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT-STYLE: normal; LETTER-SPACING: normal; LINE-HEIGHT: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">Output</span></h2><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">For each test case in the input, output a single integer denoting the maximal value of the new garbage heap. Print a blank line between test cases.</span></p><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;"></span></p><h2 style="MARGIN-BOTTOM: 0px; FONT-FAMILY: 'times new roman'; FONT-VARIANT: normal; WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT-STYLE: normal; LETTER-SPACING: normal; LINE-HEIGHT: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;">Examples</span></h2><p style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; MARGIN: 0px 0px 0pt; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px"><span style="color:#3333ff;"></span></p><table class="examples" style="WHITE-SPACE: normal; TEXT-TRANSFORM: none; WORD-SPACING: 0px; COLOR: rgb(51,51,51); FONT: 16px 'times new roman'; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-text-stroke- 0px" cellspacing="0"><tbody><tr><td class="iofiles"><span style="color:#3333ff;">Input</span></td><td class="iofiles"><span style="color:#3333ff;">Output</span></td></tr><tr><td class="examples"><pre style="WORD-WRAP: break-word; WHITE-SPACE: pre-wrap"><span style="color:#3333ff;">1
    
    2 2 2
    -1 2 0 -3 -2 -1 1 5
    </span>

    6
    
    
    
    <pre class="cpp" name="code"><span style="font-size:14px;color:#3333ff;">/*
    _________________________________________________________________________________________________________________
    
           author    :    Grant Yaun
           time      :    2014.7.20
           algorithm :    区间dp
           thinking  :    首先把三维的立方体压缩成二维的,即把a[i][j][k]变成sum1[i][j],然后用相同的思路把二维sum1[i][j]
                          变成一维sum2[i],然后用连续子序列求最大和算法求解即可; 
    	   notice    :   把数设为long long,一开始设为int,wa了好几次;
    
    ————————————————————————————————————————————————————————————————————————————————————————————————————————————————
    */
    
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<functional>
    #include<algorithm>
    using namespace std;
    
    #define INF 0x3f3f3f3f3f3f3f
    int x,y,z,t;
    long long a[23][23][23];
    long long sum1[23][23],sum2[23];
    long long ans=-INF;
    long long dp[23];
    
    int main()
    {
        scanf("%d",&t);
        while(t--){
            ans=-999999999999;
          scanf("%d%d%d",&x,&y,&z);
          for(int i=0;i<x;i++)
            for(int j=0;j<y;j++)
              for(int k=0;k<z;k++)
                scanf("%lld",&a[i][j][k]);
    
            for(int j1=0;j1<y;j1++)
    			for(int j2=j1;j2<y;j2++)
    
    			    for(int k1=0;k1<z;k1++)
    			      for(int k2=k1;k2<z;k2++){
    						memset(sum1,0,sizeof(sum1));
    				        memset(sum2,0,sizeof(sum2));
    				       for(int d=0;d<=x;d++)
    				         dp[d]=-INF;
    		           for(int i=0;i<x;i++){
    					for(int j=j1;j<=j2;j++){
    					  for(int k=k1;k<=k2;k++)
    					  	sum1[i][j]+=a[i][j][k];
    				      sum2[i]+=sum1[i][j];}
    
    				      }
    
    				      for(int m=0;m<x;m++){
    						dp[m+1]=max(dp[m]+sum2[m],sum2[m]);
    						if(dp[m+1]>ans)
    							  ans=dp[m+1];}}
    		cout<<ans<<endl;
    		if(t) cout<<endl;
    			}
          return 0;
    }
    </span>

    
    

  • 相关阅读:
    Atitit api标准化法 it法学之 目录 1. 永远的痛点:接口与协议的标准化 1 2. 标准化优点 1 3. 标准化组织 2 3.1. 应当处理标准化委员会 2 3.2. 标准化提案与表决
    Atitit 远程存储与协议 mtp ptp rndis midi nfs smb webdav ftp hdfs v3 Atitit mtp ptp rndis midi协议的不同区别
    Atitit redis使用场合总结 使用场景 目录 1.1. 3. Session 存储 1 1、 配置数据查询 1 2. 排行榜应用,取TOP N操作 1 1.2.     1、查找最
    Atitit Java制作VCARD vcf 以上就是关于vCard的基本介绍,维基百科(英文)https://en.wikipedia.org/wiki/VCard写的比较全,可惜我看不懂。
    Atitit 存储方法大总结 目录 1. 存储方式分类 2 1.1. 按照数据分类为 结构化 半结构化 非结构化 2 1.2. 按照内外部可分类 内部存储和外部存储持久化 2 1.3. 按照本地远
    Atiitt 自我学习法流程 1.预先阶段 1.1.目标搜索 资料搜索 1.2. 1.3.通过关联关键词 抽象 等领域 拓展拓宽体系树 1.4. 2.分析整理阶段 2.1.找出重点 压缩要学会
    Atitit 编程 序列化技术点 概念原理v2 1. 序列化: 1 2. 序列化的目的 1 2.1. 为了传输 或者存储 1 3. 应用场合 1 3.1. Form提交url 1 3.2. For
    Atitit session的概念总结
    atitit 面试问题表 侧重于项目和业务描述方面.v2 良好的标准:: 1.回答问题比较流畅,较少出现停顿现象,较少犹豫 2.回答有条理清晰 不杂乱 3.回答较为丰富内容 4.精神状态紧张
    Atitit hibernste5 注解方式开发总结 目录 1. 映入hb5的jar 建立项目 1 1.1. 建表tab1 ,这里使用了sqlite数据库 1 1.2. 建立映射实体类tab1
  • 原文地址:https://www.cnblogs.com/codeyuan/p/4254492.html
Copyright © 2020-2023  润新知