zoukankan      html  css  js  c++  java
  • HDU

    input:

    3 1
    1 2 5
    10 11 6
    12 12 7
    -1 -1v
    

      

    output:

    37
    

      

    题目大意:

    一个n×n的矩阵,老鼠每次只能吃比上大的食物所在的区域,每次老鼠只能垂直或者水平移动[1,k]步,求老鼠最
    多能吃多少食物。
    

      

    分析:

    dp+dfs。跟滑雪有点类似,dp[i][j]=(i,j)位置位置最多能吃多少食物。利用dfs查找那些dp[i][j]==0的区域,
    比较四个方向上,并取最大值赋给dp[i][j]。
    

      

    code:

    #define frp
    
    #include<bits/stdc++.h>
    
    using namespace std;
    typedef long long ll;
    const ll INF = 0x3f3f3f3f;
    const ll inf = 0x7fffff;
    const int maxn = 1000;
    const int MAXN = 1050;
    int n, k;
    int dp[MAXN][MAXN], a[MAXN][MAXN];
    int dir[4][2] = {0, 1, 1, 0, -1, 0, 0, -1};
    
    bool inside(int x, int y) {
        return x >= 1 && x <= n && y >= 1 && y <= n;
    }
    
    int dfs(int i, int j) {
        if (dp[i][j])return dp[i][j];
        int ans = 0;
        for (int l = 0; l < 4; ++l) {
            for (int m = 1; m <= k; m++) {
                int x = i + dir[l][0] * m;
                int y = j + dir[l][1] * m;
                if (inside(x, y) && a[i][j] < a[x][y]) {
                    ans = max(ans, dfs(x, y));
                }
            }
        }
    //    cout<<ans<<endl;
        return dp[i][j] = ans + a[i][j];
    }
    
    void solve() {
        while (cin >> n >> k&&n!=-1&&k!=-1) {
            for (int i = 0; i < n; ++i) {
                for (int j = 0; j < n; ++j) {
                    cin>>a[i+1][j+1];
    //                cout<<a[i+1][j+1]<<" ";
                }
    //            cout<<endl;
            }
            int ans=-1;
            cout<<dfs(1,1)<<endl;
            memset(dp,0, sizeof(dp));
    //        cout << n << " " << k << endl;
        }
    }
    
    int main() {
        ios_base::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
    #ifdef frp
        freopen("D:\coding\c_coding\in.txt", "r", stdin);
    //    freopen("D:\coding\c_coding\out.txt", "w", stdout);
    #endif
        solve();
        return 0;
    }
    

      

  • 相关阅读:
    AC自动机模板
    输入输出外挂(整数)
    前同事通过接私活年入60W,他常用19个私活平台汇总!
    通用分页存储过程
    单品流向
    口令对照表
    连接字符串大全
    各搜索引擎登记入口
    moto手机软件收集
    resin在线客户系统
  • 原文地址:https://www.cnblogs.com/visualVK/p/9727410.html
Copyright © 2011-2022 走看看