zoukankan      html  css  js  c++  java
  • Problem B: Bulbs

    Problem B: Bulbs


    Greg has an m×n grid of Sweet Lightbulbs of Pure Coolness he would like to turn on. Initially, some of the bulbs are on and some are off. Greg can toggle some bulbs by shooting his laser at them. When he shoots his laser at a bulb, it toggles that bulb between on and off. But, it also toggles every bulb directly below it, and every bulb directly to the left of it. What is the smallest number of times that Greg needs to shoot his laser to turn all the bulbs on?


    Input


    The first line of input contains a single integer T (1 ≤ T ≤ 10), the number of test cases. Each test case starts with a line containing two space-separated integers m and n (1 ≤ m,n ≤ 400). The next m lines each consist of a string of length n of 1s and 0s. A 1 indicates a bulb which is on, and a 0 represents a bulb which is off.


    Output


    For each test case, output a single line containing the minimum number of times Greg has to shoot his laser to turn on all the bulbs.
    Sample Input

    2

    3 4

    0000

    1110

    1110

    2 2

    10

    00

    Sample Output


    1

    2
    Explanation
    In the first test case, shooting a laser at the top right bulb turns on all the bulbs which are off, and does not toggle any bulbs which are on.
    In the second test case, shooting the top left and top right bulbs will do the job.

     

     

    题意:把所有0,变成1最少需要几次;规则:如果把0变成1同时把左边的数和下边的数同时改变,

     

    题解:从左上角开始处理,for循环遍历即可

     

    #include<iostream>
    #include<algorithm>
    #include<string>
    #include<string.h>
    using namespace std;
    int n,m,ans=0;
    int a[405],b[405];
    string s[405];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            cin>>n>>m;
            ans=0;
            memset(a,0,sizeof(a));
            memset(b,0,sizeof(b));
            for(int i=0;i<n;i++)
                cin>>s[i];
            for(int i=0;i<n;i++)
            {
                for(int j=m-1;j>=0;j--)
                {
                    int x=s[i][j]-'0'+a[i]+b[j];
                    if(x%2==0)
                    {
                        ans++;
                        a[i]++;
                        b[j]++;
                    }
                }
            }
            cout<<ans<<endl;
        }
    }
  • 相关阅读:
    cocos2dx动画常见特效(转)
    cocos2dx常见Action(转)
    cocos2dx常见场景切换动画(转)
    android AlertDialog.Builder(Context context)换行
    使用NPOI操作Excel文件及其日期处理
    java jar文件打包成exe(Launch4j使用说明)
    知识日志2
    知识日记1
    框架体系对小软件作坊的 重要性 第二章
    框架体系对小软件作坊的 重要性 第一章
  • 原文地址:https://www.cnblogs.com/-citywall123/p/11281554.html
Copyright © 2011-2022 走看看