zoukankan      html  css  js  c++  java
  • 暑期训练2 Gym

    给一个n * m 的草地,初始时刻没有草,每单位时刻每块会长草。

    在t时刻,将在第 x 行或者第 y 列锄草。

    问最终共锄了多少草。

    暴力方法:

    标记pre[maxn][maxn],表示这个点上次的锄草时间,每次锄草都遍历当前行/列,并且标记pre。在线更新res

    复杂度k*n

    优化方法:

    标记l[maxn],r[maxn].表示该行最后的最后的锄草时间,最后根据最后时间统计贡献即可。正确性是显然的,一旦一块地被锄草,到这时刻为止所有草都会被锄。

    ll a[505][505];
    ll prec[505];
    ll prer[505];
    
    
    
    int main() {
        ll res = 0;
        int n, m, k;
        n = readint();
        m = readint();
        k = readint();
        char op[5];
        for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) a[i][j] = readll(), a[i][j] %= MOD;
        for (int i = 0; i < k; i++) {
            scanf("%s", op);
            ll x = readll();
            ll y = readll();
            if (op[0] == 'r') prer[x] = max(y, prer[x]);
            else prec[x] = max(y, prec[x]);
        }
        for (int i = 1; i <= n; i++) for (int j = 1; j <= m; j++) res += a[i][j] * (max(prer[i], prec[j]) % MOD), res %= MOD;
        Put(res);
    }
  • 相关阅读:
    提前期分类
    物料属性,MRP/MPS属性
    ASP.NET刷新页面的一些方法
    Nothing 和 Is
    三层架构与MVC
    ADO.NET
    软件工程之数据流程图(DFD Data Flow Diagram)
    VB.NET小结
    推荐开发人员看的具有影响力的书籍
    C++考试
  • 原文地址:https://www.cnblogs.com/hznumqf/p/13531476.html
Copyright © 2011-2022 走看看