看的第一眼觉得还好,,,,感觉是一块用一次机会来变成数字,结果第四组样例明显是过不去了= =。。。。
找了找题解,,发现了好多什么说矩阵前缀和的,,,,那东西是什么鬼。。。。一副大家都会的样子= =。。。。。。
我想呀想呀想呀(看别人代码呀看呀看呀)原来就是每次的都要是有左上角的那个才行。。。(说的还算可以吧,,)就是相当于每次改变数字都要改变的是矩阵的左上部分。。。这样就有点难度了不过数据比较小直接暴力吧~~~~很容易想到肯定是先把右下角的搞掂,,,然后一行一行搞掂(一列一列应该也可以)不用搞的跳过用的直接整个左上角全变然后再遍历。。。。。23333333333太通俗易懂了。。。
//很简单很简单呀~~~~~
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int n,m,ans;
char b[101][101];
int a[101][101];
int main()
{
int i,j,k,l;
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
scanf("%s",b[i]);
memset(a,0,sizeof(a));
ans=0;
for(i=n-1;i>=0;i--)
for(j=m-1;j>=0;j--)
{
int q=(b[i][j]=='B'?1:-1);
if(a[i][j]!=q)
{
ans++;
//printf("%d %d\n",i,j);
int temp=q-a[i][j];
for(k=0;k<=i;k++)
for(l=0;l<=j;l++)
a[k][l]+=temp;
}
}
printf("%d\n",ans);
return 0;
}