zoukankan      html  css  js  c++  java
  • 洛谷——P2706 巧克力

    https://www.luogu.org/problem/show?pid=2706

    题目背景

    王7的生日到了,他的弟弟准备送他巧克力。

    题目描述

    有一个被分成n*m格的巧克力盒,在(i,j)的位置上有a[i,j]块巧克力。就在送出它的前一天晚上,有老鼠夜袭巧克力盒,某些位置上被洗劫并且穿了洞。所以,你——王7的弟弟王9,必须从这个满目苍夷的盒子中切割出一个矩形巧克力盒,其中不能有被老鼠洗劫过的格子且使这个盒子里的巧克力尽量多。

    输入输出格式

    输入格式:

    第一行有两个整数 n、m。第 i+1行的第 j 个数表示a[ i , j ]。如果这个数为 0 ,则表示这个位置的格子被洗劫过。

    输出格式:

    输出最大巧克力数。

    输入输出样例

    输入样例#1:
    3 4
    1 2 3 4
    5 0 6 3
    10 3 4 0
    输出样例#1:
    17
    //10 3 4这个矩形的巧克力数最大

    说明

    1≤n,m≤300

    0≤a[i,j]≤255

    如果将0 的点赋值为极小值得点,问题等同于求的最大矩阵和、

    参考http://www.cnblogs.com/Shy-key/p/7608340.html这里不赘述了

     1 #include <cstdio>
     2 
     3 const int INF(1e7);
     4 const int N(305);
     5 int n,m;
     6 long long val[N][N],tot,ans;
     7 
     8 int Presist()
     9 {
    10     scanf("%d%d",&n,&m);
    11     for(int i=1; i<=n; ++i)
    12       for(int j=1; j<=m; ++j)
    13       {
    14           scanf("%lld",&val[i][j]);
    15           if(!val[i][j]) val[i][j]=-INF;
    16           val[i][j]+=val[i-1][j];
    17       }
    18     for(int top=0; top<n; ++top)
    19         for(int i=top+1; i<=n; ++i)
    20         {
    21             for(int j=1; j<=m; ++j)
    22             {
    23                 if(tot<0) tot=val[i][j]-val[top][j];
    24                 else tot+=val[i][j]-val[top][j];
    25                 if(tot>ans) ans=tot;
    26             }   tot=0;
    27         }
    28     printf("%lld
    ",ans);
    29     return 0;
    30 }
    31 
    32 int Aptal=Presist();
    33 int main(int argc,char*argv[]){;}
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    Unity3D笔记十六 输入输出-键盘事件、鼠标事件
    Unity3D笔记十五 碰撞、移动
    Unity3D笔记十四 力
    Unity3D笔记十三 摄像机之间切换
    the pointer this
    argc[] and *argv[]
    Square Detector
    pointer1
    OpenCV1
    OpenCV
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7608345.html
Copyright © 2011-2022 走看看