zoukankan      html  css  js  c++  java
  • Codeforces Round #221 (Div. 1) B. Maximum Submatrix 2 DP

    链接:

    http://codeforces.com/contest/375/problem/B

    题意:

    给出一个01矩阵,行与行之间可以互换位置,问能够得到最大的全1矩阵的面积。

    题解:

    定义dp[i][j]表示从i开始长度为j的有多少个

    然后再求一下后缀,即dp[i][j]表示从i开始长度大于等于j的有多少个

    最后遍历一下dp数组就可以了

    开始的时候我是把每个起点的单独的放到vector里面,然后排序,结果tle在40个样例。。

    代码:

    31 int n, m;
    32 VI v[MAXN];
    33 int last[MAXN];
    34 int dp[MAXN][MAXN];
    35 
    36 bool cmp(int a, int b) {
    37     return a > b;
    38 }
    39 
    40 int main() {
    41     ios::sync_with_stdio(false), cin.tie(0);
    42     cin >> n >> m;
    43     rep(i, 0, n) {    
    44         string s;
    45         cin >> s;
    46         memset(last, 0, sizeof(last));
    47         per(i, 0, m) {
    48             if (s[i] == '1') last[i] = last[i + 1] + 1;
    49             else last[i] = 0;
    50         }
    51         rep(i, 0, m) if (last[i]) dp[i][last[i]]++;
    52     }
    53     int ans = 0;
    54     rep(i, 0, m) per(j, 1, m) dp[i][j] += dp[i][j + 1];
    55     rep(i, 0, m) rep(j, 1, m + 1) ans = max(ans, j*dp[i][j]);
    56     cout << ans << endl;
    57     return 0;
    58 }
  • 相关阅读:
    Python—模块
    Python之路_Day5
    Python之路_Day4
    Py获取本机指定网卡的ip地址
    Python之路_Day3
    Python之路—Day2作业
    Python之路—Day2
    Python之路—Day1作业
    Python之路—Day1
    Python数据类型
  • 原文地址:https://www.cnblogs.com/baocong/p/7348462.html
Copyright © 2011-2022 走看看