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

E. Air Conditioners

https://codeforces.com/problemset/problem/1547/E

题意:有长度为n的数组,还有k个空调,给出空调所在的位置跟温度,求n个位置所有位置的温度。如果某个位置没有温度,那么这个位置的温度是左边的空调或者右边的空调传过来的温度中较低的一个,其中传过来的温度的计算共识是a[j] + abs(i - j)(假设当前位置是i)。

思路:维护一个left和right数组,表示当前位置上左边传过来的最低温度和右边传过来的最低温度,按顺序递推一遍即可,然后再同时遍历一次left和right,取每个位置上的较小值即可。

总结:left的下标应该是比i晚一个,pref[i + 1] = a[i] + pref[i],right应该是suff[i] = a[i] + suff[i + 1],然后遍历左右就是ans[i] = pref[i + 1] + suff[i],或者ans[i] = pref[i] + suff[i - 1]

inline void solve() {int n, k;cin >> n >> k;vector<int> a(n);vector<int> pos(k);for (int i = 0; i < k; ++i) {cin >> pos[i];pos[i] --;}for (int i = 0; i < k; ++i) {int t;cin >> t;a[pos[i]] = t;}vector<int> left(n + 1, INF), right(n + 1, INF);for (int i = 0; i < n; ++i) {if (a[i]) {left[i + 1] = a[i];}left[i + 1] = min(left[i + 1], left[i] + 1);}for (int i = n - 1; i >= 0; --i) {if (a[i]) {right[i] = a[i];}right[i] = min(right[i + 1] + 1, right[i]);}vector<int> ans(n + 1);for (int i = 1; i <= n; ++i) {ans[i] = min(left[i], right[i - 1]);}for (int i = 1; i <= n; ++i) {cout << ans[i] << " \n"[i == n];}
}
http://www.njgz.com.cn/news/976.html

相关文章:

  • 【圆方树】学习笔记
  • 百度地图插件在浏览器不显示
  • java 启动参数优化
  • 超声波数值模拟与声场传播的MATLAB实现
  • 直播回放:纷享销客专家揭秘化工企业如何借力CRM实现精益增长?
  • Java “ClassCastException”解决
  • 在Java中如何将基本数据类型转换为String
  • etcd备份(docker部署)
  • Windows搭建 ESP IDF 5.4.1开发环境以及编译小智
  • 神经网络结构类型
  • vm虚拟机局限性
  • 大道至简
  • 轻松处理证件照!又一款 AI 证件照制作工具!
  • 2025/07/21~27 总结
  • AI智能体时代,看华为云AI原生应用引擎2.0——Versatile如何脱颖而出,面向千行万业,打造最佳企业Agent平台
  • 文件拆分为10份
  • 【Redis分布式锁实现】基于 Redis 单节点(Spring Boot 示例)
  • 2025-07-28 关于js中不写分号会报错的几种情况(Deepseek)
  • 【好题选讲】P1516 青蛙的约会
  • 文件描述符
  • 机器学习常见的任务类型
  • 一期6.文本摘要
  • day06
  • Anime.js - 轻量级JavaScript动画库
  • 无监督通用异常检测方法SEAD解析
  • Metasploit Framework 6.4.76 (macOS, Linux, Windows) - 开源渗透测试框架
  • C#性能优化:为何 x * Math.Sqrt(x) 远胜 Math.Pow(x, 1.5)
  • Metasploit Pro 4.22.8-2025063001 (Linux, Windows) - 专业渗透测试框架
  • Spring AI 框架中如何集成 MCP?
  • 提升效率:AI 知识库在软件开发中的应用