Codeforces548B:Mike and Fun

Mike and some bears are playing a game just for fun. Mike is the judge. All bears except Mike are standing in an n?×?m grid,
there‘s exactly one bear in each cell. We denote the bear standing in column number j of row number i by (i,?j).
Mike‘s hands are on his ears (since he‘s the judge) and each bear standing in the grid has hands either on his mouth or his eyes.

They play for q rounds. In each round, Mike chooses a bear (i,?j) and
tells him to change his state i. e. if his hands are on his mouth, then he‘ll put his hands on his eyes or he‘ll put his hands on his mouth otherwise. After that, Mike wants to know the score of the bears.

Score of the bears is the maximum over all rows of number of consecutive bears with hands on their eyes in that row.

Since bears are lazy, Mike asked you for help. For each round, tell him the score of these bears after changing the state of a bear selected in that round.

Input

The first line of input contains three integers nm and q (1?≤?n,?m?≤?500 and 1?≤?q?≤?5000).

The next n lines contain the grid description. There are m integers
separated by spaces in each line. Each of these numbers is either 0(for mouth) or 1 (for
eyes).

The next q lines contain the information about the rounds. Each of them contains two integers i and j (1?≤?i?≤?n and 1?≤?j?≤?m),
the row number and the column number of the bear changing his state.

Output

After each round, print the current score of the bears.

Sample test(s)

input

5 4 5
0 1 1 0
1 0 0 1
0 1 1 0
1 0 0 1
0 0 0 0
1 1
1 4
1 1
4 2
4 3

output

3
4
3
3
4

题意:
给出一个n*m的0,1矩阵
然后有k次操作,每次操作给出一个坐标,代表对该坐标的数字取反
每次操作之后,输出矩阵里每一行连续1的个数最大的那个值

思路:
由于数据和查询都不是很大,可以直接暴力解决

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <stack>
#include <queue>
#include <map>
#include <set>
#include <vector>
#include <math.h>
#include <bitset>
#include <algorithm>
#include <climits>
using namespace std;

#define LS 2*i
#define RS 2*i+1
#define UP(i,x,y) for(i=x;i<=y;i++)
#define DOWN(i,x,y) for(i=x;i>=y;i--)
#define MEM(a,x) memset(a,x,sizeof(a))
#define W(a) while(a)
#define gcd(a,b) __gcd(a,b)
#define LL long long
#define N 500005
#define MOD 1000000007
#define INF 0x3f3f3f3f
#define EXP 1e-8
#define lowbit(x) (x&-x)
struct node
{
    int num[505],sum,maxn;
} a[505];

int main()
{
    int n,m,i,j,k;
    scanf("%d%d%d",&n,&m,&k);
    memset(a,0,sizeof(a));
    for(i = 1; i<=n; i++)
    {
        a[i].maxn=0;
        a[i].sum=0;
        for(j = 1; j<=m; j++)
        {
            scanf("%d",&a[i].num[j]);
            if(a[i].num[j]==1)
                a[i].sum+=a[i].num[j];
            else
            {
                a[i].maxn = max(a[i].maxn,a[i].sum);
                a[i].sum = 0;
            }
        }
        a[i].maxn = max(a[i].maxn,a[i].sum);
    }
    while(k--)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        if(a[x].num[y]==1)
        {
            a[x].num[y] = 0;
        }
        else
        {
            a[x].num[y] = 1;
        }
        a[x].maxn=0;
        a[x].sum=0;
        for(j = 1; j<=m; j++)
        {
            if(a[x].num[j]==1)
                a[x].sum+=a[x].num[j];
            else
            {
                a[x].maxn = max(a[x].maxn,a[x].sum);
                a[x].sum = 0;
            }
        }
        a[x].maxn = max(a[x].maxn,a[x].sum);
        int maxn = -1;

        for(i = 1; i<=n; i++)
            maxn=max(maxn,a[i].maxn);
        printf("%d\n",maxn);
    }

    return 0;
}

时间: 2024-10-05 02:47:47

Codeforces548B:Mike and Fun的相关文章

Codeforces 798D Mike and distribution - 贪心

Mike has always been thinking about the harshness of social inequality. He's so obsessed with it that sometimes it even affects him while solving problems. At the moment, Mike has two sequences of positive integers A = [a1, a2, ..., an] and B = [b1, 

G - Mike and gcd problem

G - Mike and gcd problem Mike has a sequence A?=?[a1,?a2,?...,?an] of length n. He considers the sequence B?=?[b1,?b2,?...,?bn] beautiful if the gcd of all its elements is bigger than 1, i.e. . Mike wants to change his sequence in order to make it be

CF Round410 D. Mike and distribution

D. Mike and distribution 构造法 798D - Mike and distribution In the beginning, it's quite easy to notice that the condition " 2·(ap1?+?...?+?apk) is greater than the sum of all elements in A " is equivalent to " ap1?+?...?+?apk is greater than

Codeforces 798D Mike and distribution(贪心或随机化)

题目链接 Mike and distribution 题目意思很简单,给出$a_{i}$和$b_{i}$,我们需要在这$n$个数中挑选最多$n/2+1$个,使得挑选出来的 $p_{1}$,$p_{2}$,$p_{3}$,...,$p_{m}$满足 $a_{p1}+a_{p2}+a_{p3}+...+a_{p_{m}}>a_{1}+a_{2}+a_{3}+...+a_{n}$ $b_{p1}+b_{p2}+b_{p3}+...+b_{p_{m}}>b_{1}+b_{2}+b_{3}+...+b_

CodeForces 689C Mike and Chocolate Thieves (二分)

原题: Description Bad news came to Mike's village, some thieves stole a bunch of chocolates from the local factory! Horrible! Aside from loving sweet things, thieves from this area are known to be very greedy. So after a thief takes his number of choco

Codeforces Round #305 (Div. 1) B. Mike and Feet

Mike is the president of country What-The-Fatherland. There are n bears living in this country besides Mike. All of them are standing in a line and they are numbered from 1 to n from left to right. i-th bear is exactly ai feet high. A group of bears

Mike post process with Matlab toolbox

表怕,这个博客只有题目是英文的…… Matlab toolbox 安装 去DHI官网下载最新的MikeSDK2014与Matlab toolbox,下载好后安装MikeSDK2014,注意电脑上不能有其他版本的Mike软件. 安装成功后进入解压缩后的Matlab toolbox文件夹MatlabDfsUtil内,运行脚本MatlabDfsUtilBuild.bat,若脚本成功运行,则Toolbox安装成功.注意检查SDK安装路径与MatlabDfsUtilBuild.bat中内容是否一致,如默认

Mike Gancarz:Linux/Unix设计思想

Mike Gancarz是一位技术布道者.他是Linux/Unix最主要的倡导者之一,也是最早开发X Window System的先驱.他把一些在Unix/Linux社区里口口相传的哲学思想总结提炼,写成了<Linux and the UNIX Philosophy>这样一本完整的Unix/Linux哲学理论书籍.他在书中提出了九条训格之言: 一.小即是美 二.让每一个程序只做好一件事情 三.尽快建立原型 四.舍高效率而取可移植性 五.使用纯文本文件来存储数据 六.充分利用软件的杠杆效应 七.

codeforces 798C Mike and gcd problem

C.Mike and gcd problem Mike has a sequence A?=?[a1,?a2,?...,?an] of length n. He considers the sequence B?=?[b1,?b2,?...,?bn] beautiful if the gcd of all its elements is bigger than 1, i.e. . Mike wants to change his sequence in order to make it beau