• AtCoder Beginner Contest 147 E. Balanced Path


    思路:

    dp,使用了bitset优化。

    实现:

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 81;
     4 const int INF = 0x3f3f3f3f;
     5 int a[N][N], b[N][N];
     6 bitset<N * N * 4> dp[N][N];
     7 
     8 int main()
     9 {
    10     int h, w;
    11     while (cin >> h >> w)
    12     {
    13         for (int i = 0; i < h; i++)
    14         {
    15             for (int j = 0; j < w; j++)
    16             {
    17                 cin >> a[i][j];
    18             }
    19         }
    20         for (int i = 0; i < h; i++)
    21         {
    22             for (int j = 0; j < w; j++)
    23             {
    24                 cin >> b[i][j];
    25             }
    26         }
    27         for (int i = 0; i < h; i++)
    28         {
    29             for (int j = 0; j < w; j++)
    30             {
    31                 dp[i][j].reset();
    32             }
    33         }
    34         dp[0][0][a[0][0] - b[0][0] + N * N * 2] = 1;
    35         dp[0][0][b[0][0] - a[0][0] + N * N * 2] = 1;
    36         for (int i = 0; i < h; i++)
    37         {
    38             for (int j = 0; j < w; j++)
    39             {
    40                 int tmp = abs(a[i][j] - b[i][j]);
    41                 if (j)
    42                 {
    43                     dp[i][j] |= dp[i][j - 1] << tmp;
    44                     dp[i][j] |= dp[i][j - 1] >> tmp;
    45                 }
    46                 if (i)
    47                 {
    48                     dp[i][j] |= dp[i - 1][j] << tmp;
    49                     dp[i][j] |= dp[i - 1][j] >> tmp;
    50                 }
    51             }
    52         }
    53         int res = INF;
    54         for (int i = 0; i < N * N * 4; i++)
    55         {
    56             if (dp[h - 1][w - 1][i]) res = min(res, abs(i - N * N * 2));
    57         }
    58         cout << res << endl;
    59     }
    60     return 0;
    61 }
  • 相关阅读:
    光学
    ZYNQ学习笔记2——实例
    ZYNQ学习笔记
    AD使用技巧
    关于浮点运算的一点见解
    解决ccs不能同时导入两个相同工程名的问题
    multisum14 快捷键
    你的进程为什么被OOM Killer杀死了?
    Linux下哪些进程在消耗我们的cache?
    linux 安装python3.7.5
  • 原文地址:https://www.cnblogs.com/wangyiming/p/12055814.html
Copyright © 2020-2023  润新知