首页 > 其他分享 >P1434 [SHOI2002] 滑雪(记忆化搜索 DAG)

P1434 [SHOI2002] 滑雪(记忆化搜索 DAG)

时间:2022-12-28 13:11:23浏览次数:60  
标签:DAG return int yy xx P1434 SHOI2002

P1434 [SHOI2002] 滑雪

题意

给你一个 \(n\times m\) 的矩阵 \(A\), \(A_{i,j}\) 代表 \((i , j)\) 这个地方的高度,你可以从任意一个地方出发,然后走到一个和这个地方四联通并且高度严格小于当前位置高度地方,求你可以走的最长路线长度。

思路

​ 很容易看出这是个搜索问题,但是也很明显会对某些状态重复访问,指数级的复杂度是一定会TLE的。这个时候就可以加上一个记忆化,这样就能解决超时的问题了。为什么不用递推用搜索,因为题目中存在复杂的拓扑结构,也就是从高处滑向低处,如果要递推的话,还要排序,实现起来非常麻烦,没有必要。

实现

#include <bits/stdc++.h>

using namespace std;

const int N = 105;
int f[N][N], g[N][N];
int n, m;
int d[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};

bool check(int x, int y)
{
    if(x < 1 || y < 1 || x > n || y > m)    return false;
    return true;
}

int dfs(int x, int y)
{
    if(f[x][y] != -1)   return f[x][y];
    f[x][y] = 1;

    for(int i = 0; i < 4; i ++)
    {
        int xx = x + d[i][0], yy = y + d[i][1];
        if(!check(xx, yy))  continue;
        if(g[xx][yy] <= g[x][y])    continue;
        f[x][y] = max(f[x][y], dfs(xx, yy) + 1);
    }
    return f[x][y];
}

int main()
{
    memset(f, -1, sizeof f);
    cin >> n >> m;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            cin >> g[i][j];

    int res = 0;
    for(int i = 1; i <= n; i ++)
        for(int j = 1; j <= m; j ++)
            res = max(res, dfs(i, j));  

    cout << res << '\n';
}   

标签:DAG,return,int,yy,xx,P1434,SHOI2002
From: https://www.cnblogs.com/DM11/p/17009911.html

相关文章

  • DAG任务调度系统 Taier 演进之道,探究DataSourceX 模块
    熟悉Taier的小伙伴们应该都知道,在11月7日发布的​​Taier1.3新版本​​中,我们融合了「DataSourceX模块」。这是十分重要的一个变化,移除Taier外部插件依赖,新增数据源插件相......
  • T1408 矩阵嵌套(DAG 记忆化搜索)
    T1408矩阵嵌套​ 有n个矩阵,每个矩阵有长x和宽y。我们定义矩阵A可以嵌套在矩阵B中:A.x>B.x且A.y>B.y或者A.x>B.y且A.y>B.x。我们现在要找一个最长......
  • [dp 记录]agc016F Game on DAG
    博弈论好题,做完感觉加深了对SG函数的理解!题意:给定一张DAG,问该DAG的\(2^m\)张导出子图中有多少张满足\(SG[1]=SG[2]\)注:此为转换后题意\(n\leq15\)考虑推......
  • Apache Airflow < 2.4.0 example dag 远程代码执行漏洞(CVE-2022-40127)【WAF防护运营】
    ApacheAirflow是一个可编程,调度和监控的工作流平台,基于有向无环图(DAG),Airflow可以定义一组有依赖的任务,按照依赖依次执行。CVE-2022-40127中,若攻击者可访问到ApacheA......
  • Dagger2利器系列一:入门到使用
    商业转载请联系作者获得授权,非商业转载请注明出处。目录​​一 Dagger2​​​​1.1简介:​​​​1.2起源​​​​二Dagger2注解初识​​​​2.1@Inject:​​​​2.2@Mod......
  • 洛谷P1434滑雪分析
    [SHOI2002]滑雪题目描述Michael喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来......
  • dagger2(dagger2)
    PowerVR、Adreno、Mali、Tegra2分别代表那几个处理器MALI-400,单核三角形输出率30M/秒像素填充率275M/秒I9100集成4个Mali-400MP显示核心,性能远超Adreno205高通双核GPU......
  • Abp FullAuditedAggregateRoot
    https://www.cnblogs.com/jackyfei/p/16193430.html这一次,我继承自FullAuditedAggregateRoot,相比Categoryd的AuditedAggregateRoot类,它还增加了IsDeleted、DeletionTime......
  • P1434
    [SHOI2002]滑雪题目描述Michael喜欢滑雪。这并不奇怪,因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来......
  • P6560 [SBCOI2020] 时光的流逝(DAG图上博弈模板)
    P6560[SBCOI2020]时光的流逝(DAG图上博弈模板)题意:​ 给出一个有向图(可能有环),每轮游戏有一个起点和终点,A和B一起玩游戏。A先移动,然后他们交替移动,当谁把棋子移动至终点,谁......