zoukankan      html  css  js  c++  java
  • [CF738B]Spotlights(前缀和,模拟)

    题目链接:http://codeforces.com/contest/738/problem/B

    题意:问多少个0的方向,使得方向上至少有一个1。

    四个方向统计一遍前缀和,向上向左正着记,向下向右倒着记。判断某0点是不是大于等于1。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int maxn = 1010;
     5 int G[maxn][maxn];
     6 int dp[5][maxn][maxn];
     7 int n, m;
     8 int ret;
     9 
    10 int main() {
    11     // freopen("in", "r", stdin);
    12     while(~scanf("%d%d",&n,&m)) {
    13         for(int i = 1; i <= n; i++) {
    14             for(int j = 1; j <= m; j++) {
    15                 scanf("%d", &G[i][j]);
    16             }
    17         }
    18         ret = 0;
    19         for(int i = 1; i <= n; i++) {
    20             for(int j = 1; j <= m; j++) {
    21                 dp[0][i][j] = G[i][j] + dp[0][i][j-1];
    22                 dp[1][i][j] = G[i][j] + dp[1][i-1][j];
    23             }
    24         }
    25 
    26         for(int i = n; i >= 1; i--) {
    27             for(int j = m; j >= 1; j--) {
    28                 dp[2][i][j] = G[i][j] + dp[2][i][j+1];
    29                 dp[3][i][j] = G[i][j] + dp[3][i+1][j];
    30             }
    31         }
    32 
    33         for(int i = 1; i <= n; i++) {
    34             for(int j = 1; j <= m; j++) {
    35                 if(G[i][j] == 0) {
    36                     for(int k = 0; k <= 3; k++) {
    37                         if(dp[k][i][j] != 0) ret++;
    38                     }
    39                 }
    40             }
    41         }
    42         printf("%d
    ", ret);
    43     }        
    44     return 0;
    45 }
  • 相关阅读:
    final关键字的用法
    多态的理解
    5.13会话技术Cookie---Session
    5.13Junit单元测试-反射-注解
    5.13redis的相关基础
    5月13号
    5.13redis图形化工具---idea中配置redis密码
    5.13谢谢原文博主
    5.13微信登录维护态与获取用户信息思想
    5.12redis
  • 原文地址:https://www.cnblogs.com/kirai/p/6083410.html
Copyright © 2011-2022 走看看