当前位置: 首页 > news >正文

D. Explorer Space(dfs+剪枝)

Problem - 1517D - Codeforces 

题目大意:给你一个n行m列的矩阵,以及每个点上下左右相邻点的边权,求出每个点任意走k步后再回到当前这个点的最小路程,如果不能回到起始点则输出-1

思路:既然走k步后要回到起始点,则k一定要为偶数,若为奇数则每个点输出-1,否则我们只需要求从起始点走k/2步的最小路程,注意这里不能使用Dijkstra,因为可以重复走某些点,Dijkstra走过的点如果不进行标记容易超时,所以我们考虑使用dfs+记忆化,设置一个记忆化数组dp[i][j][c]表示(i,j)这个位置再走c步的最小路程。

Code:

int n,m,k;
map<PII,int> mp;
int dp[505][505][25];
int ne[4][2]={{0,1},{0,-1},{1,0},{-1,0}};int dfs(int x,int y,int c)
{if(c==0) return dp[x][y][c]=0;if(dp[x][y][c]) return dp[x][y][c];int mn=1e18;for(int i=0;i<4;i++){int tx=x+ne[i][0],ty=y+ne[i][1];if(tx>=1&&tx<=n&&ty>=1&&ty<=m){mn=min(mn,dfs(tx,ty,c-1)+mp[{(x-1)*m+y,(tx-1)*m+ty}]);}}return dp[x][y][c]=mn;
}
void solve()
{cin>>n>>m>>k;for(int i=1;i<=n;i++){for(int j=1;j<m;j++){int x;cin>>x;int a=(i-1)*m+j;int b=a+1;mp[{a,b}]=mp[{b,a}]=x; }}for(int i=1;i<n;i++){for(int j=1;j<=m;j++){int x;cin>>x;int a=(i-1)*m+j;int b=a+m;mp[{a,b}]=mp[{b,a}]=x;}}if(k&1){for(int i=1;i<=n;i++){for(int j=1;j<=m;j++) cout<<-1<<' ';cout<<endl;}return ;}k/=2;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<dfs(i,j,k)*2<<' ';}cout<<endl;}
}

 

http://www.xdnf.cn/news/386227.html

相关文章:

  • Kubernetes生产实战(二十七):精准追踪Pod数据存储位置
  • 【Beat Saber 节奏光剑】全身动捕直播搭建指南
  • 1688 API 自动化采集实践:商品详情实时数据接口开发与优化
  • SpEL(Spring Expression Language)使用详解
  • 从0开始学习大模型--Day06--大模型的相关网络架构
  • vs2022配置opencv
  • Linux511SSH连接 禁止root登录 服务任务解决方案 scp Vmware三种模式回顾
  • 数据分析预备篇---NumPy数组
  • postgres--MVCC
  • ARP协议
  • 【Python】异步优势演员-评论家(A3C)算法在Python中的实现与应用
  • 【Python-Day 12】Python列表进阶:玩转添加、删除、排序与列表推导式
  • Javascript:数组和函数
  • Nacos 3.0 正式发布,有重大升级更进.......
  • 生产级 Flink CDC 应用开发与部署:MySQL 到 Kafka 同步示例
  • mem0跟Memgraph交互
  • spring cloud loadbalancer实现机房感知的负载均衡
  • ESP32-S3 学习笔记(1)
  • mac环境配置(homebrew版)
  • [案例四] 智能填写属性工具(支持装配组件还有建模实体属性的批量创建、编辑)
  • ST表(稀疏表)
  • 理解反向Shell:隐藏在合法流量中的威胁
  • Python并发编程:开启性能优化的大门(7/10)
  • MySQL 索引设计宝典:原理、原则与实战案例深度解析
  • 【C++】模板初阶
  • 从零开始开发纯血鸿蒙应用之XML解析
  • 《AI大模型应知应会100篇》第58篇:Semantic Kernel:微软的大模型应用框架
  • 计算机网络|| 常用网络命令的作用及工作原理
  • 张量并行优质博客
  • 【东枫科技】使用LabVIEW进行深度学习开发