• HDU1937 Finding Seats(dp求最小矩形)


    题目描述:告诉你人数,求最小能容纳它们的矩形的面积

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    #include <cmath>
    #include <ctype.h>
    using namespace std;
    int dp[302][302];
    int test(int i,int j,int k,int l)
    {
        return dp[i][j]-dp[i][l-1]-dp[k-1][j]+dp[k-1][l-1];
    }
    int main()
    {
        int x,y,z;
        while(scanf("%d%d%d",&x,&y,&z),x)
        {
            int mmin=x*y;
            for(int i=1; getchar(),i<=x; i++)
                for(int j=1; j<=y; j++)
                    dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+(getchar()=='.');
            for(int i=1; i<=x; i++)
                if(dp[i][y]>=z)
                    for(int j=y; dp[i][j]>=z; j--)
                        for(int k=1; k<=x&&test(i,j,k,1)>=z; k++)
                            for(int l=j-mmin/(i-k+1)+1>0?j-mmin/(i-k+1)+1:0; l<=j; l++)
                                if(test(i,j,k,l)>=z)
                                    mmin=(i-k+1)*(j-l+1)<mmin?(i-k+1)*(j-l+1):mmin;
                                else break;
            printf("%d
    ",mmin);
        }
        return 0;
    }
  • 相关阅读:
    感悟.学习的方式
    IOS地理信息使用
    IOSTimer的例子留个备注
    IOSSelector的用法
    ios中addtarget的用法
    ios绘图时的坐标处理
    mac下装Ruby
    iOSbase64
    ios跳转
    Misha and Palindrome Degree CodeForces
  • 原文地址:https://www.cnblogs.com/d-e-v-i-l/p/4782865.html
Copyright © 2020-2023  润新知