您的位置:首页 > 其它

CodeForces 729B Spotlights(思维题+前缀和)

2017-11-18 18:19 459 查看
题目链接:点击打开链接

题意:给出一个矩阵,对于数值为0的位置,统计其上下左右有几个方向存在1。计算矩阵中所有0的对应值之和。

思路:遍历每个位置,利用前缀和判断该位置四个方向存不存在1。复杂度O(n^2)。

运行/限制:155ms/1000ms

#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
int a[1005][1005],sumr[1005][1005],sumc[1005][1005];
int main(){
int n,m,re;
while(scanf("%d%d",&n,&m) != EOF){
re = 0;
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
scanf("%d",&a[i][j]);
sumr[i][j] = sumr[i][j - 1] + a[i][j];
sumc[i][j] = sumc[i - 1][j] + a[i][j];
}
}
for(int i = 1;i <= n;i++){
for(int j = 1;j <= m;j++){
if(!a[i][j]){
if(sumr[i][j - 1]) re++;
if(sumr[i][m] - sumr[i][j]) re++;
if(sumc[i - 1][j]) re++;
if(sumc
[j] - sumc[i][j]) re++;
}
}
}
printf("%d\n",re);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: