zoukankan      html  css  js  c++  java
  • USACO range

      直接用dp统计即可, 假设dp[i][j]是i, j为右下角的最大可用矩阵,那么dp[i][j] = min(dp[i-1][j], dp[i][j-1], dp[i-1][j-1]) +1, 最后统计下答案即可。代码如下:

      

    /*
        ID: m1500293
        LANG: C++
        PROG: range
    */
    
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    int Map[300][300], dp[300][300];
    int N;
    int ans[300];
    
    int main()
    {
        freopen("range.in", "r", stdin);
        freopen("range.out", "w", stdout);
        scanf("%d", &N);
        for(int i=1; i<=N; i++)
        for(int j=1; j<=N; j++)
            scanf("%1d", &Map[i][j]);
        memset(dp, 0, sizeof(dp));
        for(int i=1; i<=N; i++)
        for(int j=1; j<=N; j++)
        if(Map[i][j]==1)
            dp[i][j] = min(dp[i-1][j], min(dp[i][j-1], dp[i-1][j-1]))+1;
        memset(ans, 0, sizeof(ans));
        for(int i=1; i<=N; i++)
        for(int j=1; j<=N; j++)
        for(int k=2; k<=dp[i][j]; k++)
            ans[k]++;
        for(int k=2; k<=N; k++)
            if(ans[k])
                printf("%d %d
    ", k, ans[k]);
        return 0;
    }
  • 相关阅读:
    Java面试题3
    Git 命令
    Flutter 基础控件
    Flutter工程目录
    GitHub简介
    Android Studio 安装 Flutter
    Android 权限管理
    结构型模式-适配器模式
    结构型模式-外观模式
    结构型模式-组合模式
  • 原文地址:https://www.cnblogs.com/xingxing1024/p/5094591.html
Copyright © 2011-2022 走看看