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

贪心 + 分层图bfs,newcoder 76652/B

目录

一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

二、解题报告

1、思路分析

2、复杂度

3、代码详解


一、题目

1、题目描述

2、输入输出

2.1输入

2.2输出

3、原题链接

https://ac.nowcoder.com/acm/contest/76652/B


二、解题报告

1、思路分析

以(0, 0) 为起点,进行bfs

bfs可以每次扩展一层,我们每次选择可扩展位置中字符最小的那些

这样我们会进行多路增广

由于路径长度为n + m - 1,所以只需增广 n + m - 1 次

2、复杂度

时间复杂度: O(NMlogNM)空间复杂度:O(NM)

3、代码详解

 ​
#include <bits/stdc++.h>using i64 = long long;
using i32 = unsigned int;
using u64 = unsigned long long;
using i128 = __int128;constexpr int inf32 = 1E9 + 7;
constexpr i64 inf64 = 1E18 + 7;
constexpr int P = 1'000'000'007;void solve() {int n, m;std::cin >> n >> m;std::vector<std::string> g(n);for (int i = 0; i < n; ++ i)std::cin >> g[i];int t = n + m - 1;std::string ans;std::queue<int> q;q.push(0);std::vector<int> vis(n * m);vis[0] = true;constexpr int dir[3]{1, 0, 1};while (t --) {ans += g[q.front() / m][q.front() % m];std::vector<int> buf;while(q.size()) {int i = q.front();q.pop();int x = i / m, y = i % m;for (int k = 0; k < 2; ++ k) {int nx = dir[k] + x, ny = dir[k + 1] + y;if (nx < 0 || ny < 0 || nx >= n || ny >= m || vis[nx * m + ny]) continue;buf.push_back(nx * m + ny);vis[nx * m + ny] = true;}}std::sort(buf.begin(), buf.end(), [&](int i, int j) -> bool{return g[i / m][i % m] < g[j / m][j % m];});for (int i = 0; i < buf.size() && g[buf[0] / m][buf[0] % m] == g[buf[i] / m][buf[i] % m]; ++ i)q.push(buf[i]);}std::cout << ans;
}auto FIO = []{std::ios::sync_with_stdio(false);std::cin.tie(nullptr);std::cout.tie(nullptr);return 0;
}();int main () {#ifdef DEBUGfreopen("in.txt", "r", stdin);freopen("out.txt", "w", stdout);#endifint T = 1;// std::cin >> T;while (T --)solve();return 0;
}

http://www.lryc.cn/news/429134.html

相关文章:

  • 如何在Linux上部署Java Web应用程序
  • SpringBoot 整合 Excel 轻松实现数据自由导入导出
  • PyTorch 基础学习(13)- 混合精度训练
  • Mycat分片-垂直拆分
  • 一元四次方程求解-【附MATLAB代码】
  • 【极限性能,尽在掌控】ROG NUC:游戏与创作的微型巨擘
  • Ecosmos开启公测,将深度赋能CIOE中国光博会元宇宙参会新体验
  • 【Kubernetes】k8s集群之包管理器Helm
  • 嵌入式linux系统镜像制作day3(构建镜像)
  • 【生日视频制作】教师节中秋节国庆节车模特美女举牌AE模板修改文字软件生成器教程特效素材【AE模板】
  • RongCallKit iOS 端本地私有 pod 方案
  • C++11:可变参数模板
  • C++ 与 QML 之间进行数据交互的几种方法
  • Javaweb学习之Vue项目的创建(二)
  • 『深度长文』4种有效提高LLM输出质量的方法!
  • 【工业机器人】工业异常检测大模型AnomalyGPT
  • 【PGCCC】PostgreSQL案例:planning time超长问题分析#PG初级
  • 【图文并茂】ant design pro 如何给后端发送 json web token - 请求拦截器的使用
  • 【微信小程序】自定义组件 - behaviors
  • Linux ubuntu 24.04 安装运行《帝国时代3》免安装绿色版游戏,解决 “Could not load DATAP.BAR”等问题
  • Springboot 图片
  • LIMS实验室管理系统如何实现数据自动采集
  • 全自动商用油炸锅介绍:
  • CE修改器的简单使用
  • element-plus el-cascader懒加载怎么指定对应的label和value。最后一级怎么判断?
  • pdf查看密码
  • 从bbl和overleaf版本解决Arxiv提交后缺失参考文献Citation on page undefined on input line
  • Flutter【01】状态管理
  • (转载)使用zed相机录制视频
  • C/C++中奇妙的类型转换