您的位置:首页 > Web前端

Codeforces 549D Haar Features (模拟)

2015-09-30 19:16 591 查看
题目链接:http://codeforces.com/problemset/problem/549/D

题意:有一个n*m的矩阵,初始化为0,你可以将(1,1)到(x,y)的位置加上一个数(前缀矩阵),要求变成给出的矩阵(B表示-1,W表示1)

思路:由(n,m)到(1,1),发现不符合给出的矩阵就进行变换这样就是最优的了……

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#define maxn 130
using namespace std;

int mp[130][130],mpc[130][130];

void change(int n,int m,int val)
{
for (int i=0;i<=n;i++)
for (int j=0;j<=m;j++)
{
mpc[i][j]+=val;
}
}

int main()
{
int n,m;
while (scanf("%d%d",&n,&m)!=EOF)
{
memset(mpc,0,sizeof(mpc));
for (int i=0;i<n;i++)
for (int j=0;j<m;j++)
{
char tem;
cin>>tem;
if (tem=='B') mp[i][j]=1;
else mp[i][j]=-1;
}
int res=0;
for (int i=n-1;i>=0;i--)
{
for (int j=m-1;j>=0;j--)
{
if (mp[i][j]!=mpc[i][j])
{
int d=mp[i][j]-mpc[i][j];
change(i,j,d);
res++;
}
}
}
printf("%d\n",res);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: