当前位置: 首页 > 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.rkmt.cn/news/56818.html

相关文章:

  • sam3 (2)开发 - MKT
  • P1719 最大加权矩阵
  • HTML 零基础入门到实战(附 100 + 代码示例与图解教程)
  • Python json list as json and write in json file,tkinter popup as messagebox
  • windows的句柄和linux的fd对比
  • 【第7章 I/O编程与异常】为什么句柄看起来像指针却不是指针?
  • SQL 基础语法
  • 北大六院后看又相
  • 详细介绍:后端开发常用Linux命令
  • 团队作业 3 - 教学课件和班级管理系统 需求改进 系统设计 - WAR
  • win11下载安装python,命令提示符输入python,打开Microsoft store界面,解决方案
  • 全网都在找的Nano Banana Pro API 来了!便宜稳定0.15/张
  • 通过DataReader获取sql查询的字段元数据信息
  • The 5W2H Problem-Solving Method
  • 重组生长因子全面解析:从结构功能到科研应用指南
  • STM32系统时钟与SysTick定时器
  • 【Linux】教你在 Linux 上搭建 Web 服务器,步骤清晰无门槛 - 详解
  • 【第7章 I/O编程与异常】\r\n 和 \n\r是一回事吗?
  • 2025-11-21
  • Gephi如何支持MySQL数据的复杂查询
  • Fisrt Blog
  • c语言和python如何解决文本文件中“不同平台换行符不兼容”问题
  • 完整教程:政务系统信创改造中,金仓日志如何满足等保2.0三级审计要求
  • 如何使用IDM嗅探视频并下载?
  • java数据结构--LinkedList与链表 - 教程
  • Record-X
  • macos: 景观类动态的壁纸和屏保保存在哪里
  • nju实验二 译码器和编码器
  • 第四十六篇
  • 2025年送礼水果排行榜权威推荐,拉吾尤摩赣南脐橙荣登榜首