zoukankan      html  css  js  c++  java
  • 「日常训练」 Mike and Fun (CFR305D2B)

    题意(CodeForces 548B)

    每次对01矩阵中的一位取反,问每次操作后,单列中最长连续1的长度。

    分析

    非常非常简单,但是我当时训练的时候WA了四次。。。无力吐槽了,人间 不值得.jpg

    代码

    #include <bits/stdc++.h>
    #define MP make_pair
    #define PB push_back
    #define fi first
    #define se second
    #define ZERO(x) memset((x), 0, sizeof(x))
    #define ALL(x) (x).begin(),(x).end()
    #define rep(i, a, b) for (int i = (a); i <= (b); ++i)
    #define per(i, a, b) for (int i = (a); i >= (b); --i)
    #define QUICKIO                  
        ios::sync_with_stdio(false); 
        cin.tie(0);                  
        cout.tie(0);
    using namespace std;
    using ll = long long;
    using ull = unsigned long long;
    using pi = pair<int,int>;
    const int MAXN=500;
    
    bool status[MAXN+5][MAXN+5];
    int main()
    {
    QUICKIO
        int n,m,k; cin>>n>>m>>k;
        rep(i,1,n)
            rep(j,1,m)
                cin>>status[i][j];
        int row[MAXN+5]; ZERO(row);
        rep(i,1,n)
        {
            int tmp=0;
            rep(j,1,m)
            {
                if(status[i][j])
                {
                    if(j>1 && status[i][j-1])
                        tmp++;
                    else tmp=1;
                }
                else
                {
                    row[i]=max(tmp,row[i]);
                    tmp=0;
                }
            }
            row[i]=max(tmp,row[i]);
        }
        rep(i,1,k)
        {
            int tmp=0;
            int x,y; cin>>x>>y;
            status[x][y]=!status[x][y];
            row[x]=0;
            rep(j,1,m)
            {
                if(status[x][j])
                {
                    if(j>1 && status[x][j-1])
                        tmp++;
                    else tmp=1;
                }
                else
                {
                    row[x]=max(tmp,row[x]);
                    tmp=0;
                }
            }
            row[x]=max(tmp,row[x]);
            int maxr=0;
            rep(i,1,n)
                maxr=max(maxr,row[i]);
            cout<<maxr<<endl;
        }
        return 0;
    }
    如非注明,原创内容遵循GFDLv1.3发布;其中的代码遵循GPLv3发布。
  • 相关阅读:
    maven的安装教程
    webstorm的中文教程和技巧分享
    WebStorm
    grunt配置任务
    grunt快速入门
    CSS简介
    浅介HTML DOM
    【转】计算机是如何启动的?
    【转】深入理解C++中public、protected及private用法
    【转】VS2013动态库文件的创建及其使用详解
  • 原文地址:https://www.cnblogs.com/samhx/p/9652066.html
Copyright © 2011-2022 走看看