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

杂题选做 25.11

上升序列

有两个长度为 \(n\) 的单调不降序列 \(a,b\),你可以对 \(a\) 进行不超过 \(m\) 次操作:
• 选择一个下标 \(i\) 和一个整数 \(x\),把 \(a_i\) 变成 \(a_i+x\)。这里 𝑥 可以是负数。
操作一次的代价为 \(x^2\)。并且你需要保证每次操作完 \(a_i\) 还是单调不降的。
你要把 \(a\) 变成 \(b\),问最小的代价之和。答案对 \(998244353\) 取模。
如果无解,输出 -1

\(n,m \leq 10^5, a_i,b_i \leq 10^9\),保证 \(a,b\) 单调不降。

每次操作完要求单调不降的限制相当于没有,因为如果 \(a_i\) 当前操作不合法,总可以先操作不合法的那一侧,再操作 \(a_i\)。由于序列单调不降,不会成环。

\(f(i,j)\) 表示把 \(i\) 分成 \(j\) 个数 \(x_1,\dots,x_j\)\(\sum x_j\) 的最小值。不难发现 \(f(i,j)\) 关于 \(j\) 是下凸的,所以用优先队列维护一个最大的 \(\Delta = f(i,j)-f(i,j+1)\) 就行了。

复杂度 \(O((n+m) \log n)\)

http://www.jsqmd.com/news/47100/

相关文章:

  • 【第8章 数据分析基础】让AI帮你可视化一个数据集
  • sam3 (2)开发 - MKT
  • P1719 最大加权矩阵
  • Python pyinstaller convert py file as *.exe file
  • HTML 零基础入门到实战(附 100 + 代码示例与图解教程)
  • 立方数
  • Rust环境搭建
  • Python json list as json and write in json file,tkinter popup as messagebox
  • Trick——树
  • windows的句柄和linux的fd对比
  • 20251117~20251123NOIP模拟赛
  • 谁又不是一边破碎一边前行
  • Java的第一个程序
  • 题解:qoj14419 Maximum Segment Sum
  • 20232310 2025-2026-1 《网络与系统攻防技术》实验七实验报告
  • 完整教程:基于Python楼王争霸劳动竞赛数据处理分析
  • 46
  • 2025.11.21博客
  • html导出pdf
  • 【第7章 I/O编程与异常】为什么句柄看起来像指针却不是指针?
  • SQL 基础语法
  • 实用指南:暖手宝方案开发,暖手宝MCU控制方案开发设计
  • NVM 与 单节点下PM2进程守护 安装配置以及使用教程完整指南(含 Node.js 环境搭建)
  • 北大六院的诊断
  • Pycharm远程连接服务器项目 - 实践
  • django项目前端模版文件,在pycahrm无法使用ctrl+alt+l格式化代码的解决办法
  • 北大六院后看又相
  • TPAMI 2025 | 从分离到融合:新一代3D场景技术建立双重能力提升!
  • 详细介绍:后端开发常用Linux命令
  • QT:Qt5.14向文档输出表格--编译异常信息