news 2026/4/27 13:40:20

旅行者的大逃脱【牛客tracker 每日一题】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
旅行者的大逃脱【牛客tracker 每日一题】

旅行者的大逃脱

时间限制:2秒 空间限制:256M

网页链接

牛客tracker

牛客tracker & 每日一题,完成每日打卡,即可获得牛币。获得相应数量的牛币,能在【牛币兑换中心】,换取相应奖品!助力每日有题做,丰盈牛币日益多!

题目描述

旅行者偷走了芙宁娜最爱的甜点。此时,芙宁娜正在由n nnm mm列方格组成的枫丹国内内四处搜捕他。方格以从上到下1 , 2 , … , n 1,2,…,n1,2,,n行、从左到右1 , 2 , … , m 1,2,…,m1,2,,m列编号。初始时刻为1 11,旅行者位于左上角格子( 1 , 1 ) (1,1)(1,1),他的目标是在大门关闭前到达右下角格子( n , m ) (n,m)(n,m)从而逃离枫丹国。旅行者的移动规则如下:

∙ ∙在每一个时刻,他只能沿向下向右选择一个方向移动,并可以一次前进任意正整数步;移动完成后,时刻加1 11

芙宁娜派出了q qq名检查官,第i ii名检查官将在时刻t i t_iti占据格子( x i , y i ) (x_i,y_i)(xi,yi)并一直驻守。无论旅行者在时刻τ ( τ ≧ t i ) τ (τ≧t_i)τ(τti)

他都会立即被捕获,从而导致逃脱失败。此外,在时刻k kk之后大门将被永久关闭,若旅行者到达( n , m ) (n,m)(n,m)时时刻已经大于k kk,则同样逃脱失败。

请你帮助旅行者计算:

1. 在所有合法方案中逃离所需的最短时间

2. 在模998 244 353 998 244 353998 244 353意义下,可以逃脱的总方案数量

输入描述:

本题包含多组测试数据。第一行输入一个整数T ( 1 ≦ T ≦ 5 ) T(1≦T≦5)T(1T5)代表数据组数,每组测试数据描述如下:

此外,数据保证( 1 , 1 ) (1,1)(1,1)( n , m ) (n,m)(n,m)两格不会有检查官出现,但是可能会出现很多检察官出现在同一个格子的情况。

输出描述:

对于每组测试数据:

示例1

输入:

2 2 3 2 5 1 3 1 2 2 3 2 3 2 5 1 3 1 2 2 2

输出:

1 2 -1

说明:

约定:我们用 TT 来代表旅行者的位置,数字代表对应时刻会出现的检察官,F FF代表右下角的大门。

在第一个样例中,最短时间为2 22,且仅存在一条合法路径(先向下再向右再向右)。

在第二个样例中,旅行者必被捕获,故输出− 1 -11

示例2

输入:

1 8 8 11 8 7 4 2 3 1 2 1 8 1 2 1 1 5 4 1 5 8 3 8 5 4 7 1 1 3 6 1 7 2 1 1 7 2

输出:

7763 3

解题思路

本题核心是三维动态规划+前缀和优化,结合检察官障碍规则求解最短逃脱时间与方案数。定义dp[i][j][t]表示第t时刻到达坐标(i,j)的合法方案数,初始化起点dp[1][1][1]=1。利用旅行者每时刻可沿单方向走任意步的规则,通过行、列前缀和优化D P DPDP转移,规避暴力枚举步数的低效问题。预处理每个格子的最早检察官驻守时刻,若当前时刻超过该值则清空对应状态,排除非法路径。遍历所有合法时刻( ≤ k ) (≤k)k,统计终点的总方案数,记录最早到达终点的时刻为最短时间,无合法方案则输出-1

总结

核心逻辑:用三维DP维护时刻-位置的方案数,前缀和优化移动转移,过滤检察官障碍的非法路径。
关键操作:D P DPDP状态初始化、前缀和优化转移、障碍时刻预处理、最短时间与总方案数统计。
效率保障:前缀和将转移复杂度优化至线性,完美适配n,m≤500、k≤100的数据规模。

代码内容

#include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefunsignedlonglongull;typedefvector<vector<ll>>vvt;typedefpair<ll,ll>pll;constll N=1e5+10;constll INF=1e18;constll M=1e6+10;constll mod=998244353;ll dp[510][510][110];voidsolve(){ll n,m,q,k,op=-1,ans=0;cin>>n>>m>>q>>k;vvtvvl(n+3,vector<ll>(m+3,2e18));for(ll i=1,x,y,t;i<=q;i++){cin>>x>>y>>t;vvl[x][y]=min(vvl[x][y],t);}dp[1][1][1]=1;for(ll kk=2;kk<=k+1;kk++){vector<ll>vl(m+10);for(ll i=1;i<=n;i++){ll sum=0;for(ll j=1;j<=m;j++){dp[i][j][kk]=(sum+vl[j])%mod;sum=(sum+dp[i][j][kk-1])%mod;vl[j]=(vl[j]+dp[i][j][kk-1])%mod;if(kk>vvl[i][j])sum=0,vl[j]=0;}}ans=(ans+dp[n][m][kk])%mod;if(dp[n][m][kk]!=0&&op==-1)op=kk;}if(op==-1)cout<<-1<<endl;elsecout<<ans<<" "<<op-1<<endl;}intmain(){ll t=1;cin>>t;while(t--)solve();return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 13:35:19

从零构建AI语音助手:基于ESP32的小智机器人完整指南

从零构建AI语音助手&#xff1a;基于ESP32的小智机器人完整指南 【免费下载链接】xiaozhi-esp32 An MCP-based chatbot | 一个基于MCP的聊天机器人 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaozhi-esp32 在嵌入式AI快速发展的今天&#xff0c;将大型语言模…

作者头像 李华
网站建设 2026/4/27 13:32:36

Rex-Omni模型:基于NPP技术的多任务目标检测新范式

1. Rex-Omni模型核心原理剖析Next Point Prediction&#xff08;NPP&#xff09;技术彻底改变了传统目标检测的范式。不同于主流检测模型依赖矩形边界框&#xff08;bounding box&#xff09;的回归预测&#xff0c;NPP采用序列化点预测机制——模型通过迭代预测目标轮廓的下一…

作者头像 李华
网站建设 2026/4/27 13:30:09

Akagi麻将AI助手:如何用AI实时分析提升你的麻将水平?

Akagi麻将AI助手&#xff1a;如何用AI实时分析提升你的麻将水平&#xff1f; 【免费下载链接】Akagi 支持雀魂、天鳳、麻雀一番街、天月麻將&#xff0c;能夠使用自定義的AI模型實時分析對局並給出建議&#xff0c;內建Mortal AI作為示例。 Supports Majsoul, Tenhou, Riichi C…

作者头像 李华
网站建设 2026/4/27 13:26:28

Untrunc视频修复终极指南:3分钟免费恢复损坏MP4文件

Untrunc视频修复终极指南&#xff1a;3分钟免费恢复损坏MP4文件 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 视频文件意外损坏是每个数码用户都可能遇到的噩梦&a…

作者头像 李华