zoukankan      html  css  js  c++  java
  • POJ

     http://bailian.openjudge.cn/practice/1088?lang=en_US

    题解:

     设一个dp[N][N]数组代表从(i,j)坐标开始能滑到的最远距离。
    更新的方法为 遍历每个dp[i][j], 对其四周(下一个状态)的点更新。
    更新顺序为从低到高。所以用priority_queue存数据。

    坑:
      一开始更新的时候没有写dp=max(dp,····)
      也忘记了答案是dp数组的最大值
    #define _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    #include<vector>
    #include<cstring>
    #include<set>
    #include<algorithm>
    #include<stack>
    #include<string>
    #include<cstdio>
    #include<list>
    #include<cstdlib>
    #include<queue>
    
    #define _for(i, a, b) for (int i = (a); i<(b); ++i)
    using namespace std;
    const int N = 100 + 5;
    const int INF = 1e6;
    int map[N][N];
    int dp[N][N];//从i,j开始能滑到的最远距离。dp[i][j] 对其四周的点更新。更新顺序为从高到底。
    struct node {
        int x, y, w;
        node(int x = 0, int y = 0, int w = 0) :x(x), y(y), w(w) {}
        bool operator<  (const node &b)const {
            return w > b.w;
        }
    };
    int dir[4][2] = { 1,0, 0,-1, -1,0, 0,1 };
    priority_queue<node> Q;
    int main() {
        int c, r;
        cin >> r >> c;
        _for(i, 0, r)
            _for(j, 0, c) {
            cin >> map[i][j];
            Q.push(node(i, j, map[i][j]));
            dp[i][j] = 1;
        }
        int ans = 0;
    
        while (!Q.empty()) {
            node now = Q.top();
    
            ans = max(ans, dp[now.x][now.y]);
    
            Q.pop();
            for (int i = 0; i < 4; i++) {
                int dx = now.x + dir[i][0];
                int dy = now.y + dir[i][1];
                if (dx<0 || dx >= r || dy<0 || dy >= c)continue;
                if (map[dx][dy] > now.w) dp[dx][dy] = max(dp[dx][dy], dp[now.x][now.y] + 1);
    
            }
        }
        cout << ans;
        //while (!Q.empty()) {cout << Q.top().w;Q.pop();}
        system("pause");
    }
    成功的路并不拥挤,因为大部分人都在颓(笑)
  • 相关阅读:
    java实现打印倒直角三角形
    java实现打印倒直角三角形
    java实现打印倒直角三角形
    java实现打印直角三角形
    java实现打印直角三角形
    java实现打印直角三角形
    计算一个班的平均分
    计算一个班的平均分
    计算一个班的平均分
    Creating a Message Queue in PHP Without External Libraries
  • 原文地址:https://www.cnblogs.com/SuuT/p/8743879.html
Copyright © 2011-2022 走看看