zoukankan      html  css  js  c++  java
  • 【BZOJ】【1177】【APIO2009】Oil

    DP


      找出三个正方形,可以转化为将整个油田切成三个矩形块,每块中各找一个正方形区域,切的形式只有6种,分类更新ans即可

      题解:http://trinklee.blog.163.com/blog/static/238158060201482371229105/

      另:这题一般的快速读入不知为何会RE,但是题解里这位大神的快速读入就能AC……跪了跪了

     1 /**************************************************************
     2     Problem: 1177
     3     User: Tunix
     4     Language: C++
     5     Result: Accepted
     6     Time:6088 ms
     7     Memory:62028 kb
     8 ****************************************************************/
     9  
    10 //BZOJ 1177
    11 #include<vector>
    12 #include<cstdio>
    13 #include<cstring>
    14 #include<cstdlib>
    15 #include<iostream>
    16 #include<algorithm>
    17 #define rep(i,n) for(int i=0;i<n;++i)
    18 #define F(i,j,n) for(int i=j;i<=n;++i)
    19 #define D(i,j,n) for(int i=j;i>=n;--i)
    20 #define pb push_back
    21 using namespace std;
    22 inline int getint(){
    23     int v=0,sign=1; char ch=getchar();
    24     while(ch<'0'||ch>'9'){ if (ch=='-') sign=-1; ch=getchar();}
    25     while(ch>='0'&&ch<='9'){ v=v*10+ch-'0'; ch=getchar();}
    26     return v*sign;
    27 }
    28 const int N=1610,INF=~0u>>2;
    29 typedef long long LL;
    30 /******************tamplate*********************/
    31 int n,m,k;
    32 typedef int Matrix[N][N];
    33 Matrix a,b,c,d,s,t;
    34 int ans;
    35   
    36 int main(){
    37 #ifndef ONLINE_JUDGE
    38     freopen("1177.in","r",stdin);
    39     freopen("1177.out","w",stdout);
    40 #endif
    41     n=getint(); m=getint(); k=getint();
    42     int x;
    43     F(i,1,n) F(j,1,m){
    44         scanf("%d",&x);
    45         t[i][j]=t[i-1][j]+t[i][j-1]-t[i-1][j-1]+x;
    46     }
    47     F(i,k,n) F(j,k,m) s[i][j]=t[i][j]-t[i-k][j]-t[i][j-k]+t[i-k][j-k];
    48       
    49     F(i,k,n) F(j,k,m) a[i][j]=max(s[i][j],max(a[i-1][j],a[i][j-1]));
    50     F(i,k,n) D(j,m,k) b[i][j]=max(s[i][j],max(b[i-1][j],b[i][j+1]));
    51     D(i,n,k) F(j,k,m) c[i][j]=max(s[i][j],max(c[i+1][j],c[i][j-1]));
    52     D(i,n,k) D(j,m,k) d[i][j]=max(s[i][j],max(d[i+1][j],d[i][j+1]));
    53   
    54     F(i,k,n-k) F(j,k,m-k) ans=max(ans,a[i][j]+b[i][j+k]+c[i+k][m]);
    55     F(i,k,n-k) F(j,k,m-k) ans=max(ans,a[i][j]+c[i+k][j]+b[n][j+k]);
    56     F(i,k,n-k) F(j,k,m-k) ans=max(ans,a[i][m]+c[i+k][j]+d[i+k][j+k]);
    57     F(i,k,n-k) F(j,k,m-k) ans=max(ans,a[n][j]+b[i][j+k]+d[i+k][j+k]);
    58     F(i,k,n) F(j,k+k,m-k) ans=max(ans,s[i][j]+a[n][j-k]+b[n][j+k]);
    59     F(i,k+k,n-k) F(j,k,m) ans=max(ans,s[i][j]+a[i-k][m]+c[i+k][m]);
    60     printf("%d
    ",ans);
    61     return 0;
    62 }
    View Code

    1177: [Apio2009]Oil

    Time Limit: 15 Sec  Memory Limit: 162 MB
    Submit: 1144  Solved: 444
    [Submit][Status][Discuss]

    Description

    采 油区域 Siruseri政府决定将石油资源丰富的Navalur省的土地拍卖给私人承包商以建立油井。被拍卖的整块土地为一个矩形区域,被划分为M×N个小块。 Siruseri地质调查局有关于Navalur土地石油储量的估测数据。这些数据表示为M×N个非负整数,即对每一小块土地石油储量的估计值。 为了避免出现垄断,政府规定每一个承包商只能承包一个由K×K块相连的土地构成的正方形区域。 AoE石油联合公司由三个承包商组成,他们想选择三块互不相交的K×K的区域使得总的收益最大。 例如,假设石油储量的估计值如下: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8 8 8 8 8 1 1 1 1 8 8 8 8 8 1 1 1 1 8 8 8 8 8 1 1 1 1 1 1 1 8 8 8 1 1 1 1 1 1 1 1 8 8 8 1 1 1 1 1 1 9 9 9 1 1 1 1 1 1 9 9 9 如果K = 2, AoE公司可以承包的区域的石油储量总和为100, 如果K = 3, AoE公司可以承包的区域的石油储量总和为208。 AoE公司雇佣你来写一个程序,帮助计算出他们可以承包的区域的石油储量之和的最大值。

    Input

    输入第一行包含三个整数M, N, K,其中M和N是矩形区域的行数和列数,K是每一个承包商承包的正方形的大小(边长的块数)。接下来M行,每行有N个非负整数表示这一行每一小块土地的石油储量的估计值

    Output

    输出只包含一个整数,表示AoE公司可以承包的区域的石油储量之和的最大值。

    Sample Input

    12 12 3
    2 3 2 3 3 3 3 2 3 3 2
    3 3 3 2 2 3 3 4 2 2 3
    3 4 3 4 2 3 4 3 4 3 2
    4 4 4 5 3 2 4 4 4 3 3
    4 5 3 3 6 6 6 3 5 2 3
    5 5 4 5 5 6 6 4 5 3 2
    3 4 2 3 6 7 6 3 3 3 3
    2 3 3 3 2 2 2 2 3 4 3
    2 2 4 3 4 3 2 3 3 2 4
    3 3 3 3 2 4 3 3 3 2 3
    2 3 2 3 4 4 3 3 2 3 2
    3 3 3 3 3 3 4 2 3 4 3

    Sample Output

    119

    HINT

    Source

    [Submit][Status][Discuss]
  • 相关阅读:
    SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSIS 系列
    微软BI 之SSAS 系列
    微软BI 之SSRS 系列
    微软BI 之SSRS 系列
    配置 SQL Server Email 发送以及 Job 的 Notification通知功能
  • 原文地址:https://www.cnblogs.com/Tunix/p/4465398.html
Copyright © 2011-2022 走看看