2023NOIP A层联测28-大眼鸹猫
给你两个长度为 n n n 的序列 a , b a,b a,b,这两个序列都是单调不降的。
你可以对 a a a 进行不超过 m m m 次操作,每次操作你可以选择一个 i i i 满足 1 ≤ i ≤ n 1\le i\le n 1≤i≤n,然后选择一个整数(可以是负数) x x x,将 a i a_i ai 加上 x x x,这一次操作需要花费 x 2 x^2 x2 的代价。
在做操作的过程中,你需要保证 a a a 始终单调不降。
最后,你需要将 a a a 序列变成 b b b 序列,即对任意 i i i 满足 1 ≤ i ≤ n 1\le i\le n 1≤i≤n,都有 a i = b i a_i=b_i ai=bi。
求最小需要花费的总代价之和。
n , m ≤ 1 0 5 n,m\le10^5 n,m≤105
首先如果 m m m 小于 a i ≠ b i a_i\not=b_i ai=bi 的个数,就是无解了。
操作过程中,要保证 a a a 始终单调不降,看上去很难满足,但结论是一定存在一种合法操作方案。可以考虑一个极大的区间 [ l , r ] [l,r] [l,r], ∀ i ∈ [ l , r ] , a i < b i \forall i\in[l,r],a_i< b_i ∀i∈[l,r],ai<bi,此时就从 r r r 操作到 l l l,若 ∀ i ∈ [ l , r ] , a i > b i \forall i\in[l,r],a_i>b_i ∀i∈[l,r],ai>bi,就从 l l l 操作到 r r r。
所以单独考虑每一个数 ∣ a i − b i ∣ |a_i-b_i| ∣ai−bi∣,分配了 x i x_i xi 次操作,显然每次操作将 ∣ a i − b i ∣ |a_i-b_i| ∣ai−bi∣ 减少 ∣ a i − b i ∣ x i \dfrac{|a_i-b_i|}{x_i} xi∣ai−bi∣ 是代价最小的。设 f ( x ) f(x) f(x) 表示给 ∣ a i − b i ∣ |a_i-b_i| ∣ai−bi∣ 分配了 x x x 次操作的最小代价,发现 f ( x ) f(x) f(x) 是下凸函数,意思是随着 x x x 的增大, f ( x ) f(x) f(x) 减小的幅度越来越小。
那么我们可以先给每个数分配一次操作,对于剩下的操作用大根堆维护每个数再分配一次操作减少的代价,每次就贪心的去选代价减少得最多的,然后给它分配一次操作再放进堆里。最后把堆里的数拿出来算答案即可。
时间复杂度 O ( m log n ) O(m\log n) O(mlogn)。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
constexpr int N=1e5+1;
constexpr ll mod=998244353;
int n,m;
ll a[N],b[N],dis[N],ans;
inline ll getval(ll x,ll n)
{return (x/n)*(x/n)*(n-x%n)+(x/n+1)*(x/n+1)*(x%n);
}
struct node
{int num,id;bool operator<(const node &a)const{return getval(dis[id],num)-getval(dis[id],num+1)<getval(dis[a.id],a.num)-getval(dis[a.id],a.num+1);}
};
priority_queue<node> q;
int main()
{freopen("attend.in","r",stdin);freopen("attend.out","w",stdout);cin.tie(0)->sync_with_stdio(0);cin>>n>>m;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++) cin>>b[i];int fl=0;for(int i=1;i<=n;i++) fl+=(a[i]!=b[i]);if(fl>m) cout<<"-1",exit(0);for(int i=1;i<=n;i++){if(a[i]==b[i]) continue;dis[i]=abs(a[i]-b[i]);q.push({1,i});}if(q.empty()) cout<<0,exit(0);m-=fl;while(m--){node now=q.top();q.pop();now.num++;q.push(now);}while(q.size()){ans=(ans+getval(dis[q.top().id],q.top().num))%mod;q.pop();}cout<<ans;
}
相关文章:
2023NOIP A层联测28-大眼鸹猫
给你两个长度为 n n n 的序列 a , b a,b a,b,这两个序列都是单调不降的。 你可以对 a a a 进行不超过 m m m 次操作,每次操作你可以选择一个 i i i 满足 1 ≤ i ≤ n 1\le i\le n 1≤i≤n,然后选择一个整数(可以是负数&…...
电机应用-直流有刷电机
目录 直流有刷电机 工作原理 直流有刷减速电机的重要参数 电路原理与分析 驱动芯片分析 L298N驱动芯片 直流有刷减速电机控制实现 控制速度原理 硬件设计 L298N 野火直流有刷电机驱动板-MOS管搭建板 软件设计1:两个直流有刷减速电机按键控制 开发设计 …...
BIM、建筑机器人、隧道工程施工关键技术
一、BIM简介 (一)BIM概念 BIM(Building Information Modeling),建筑信息模型。该技术通过数字化手段,在计算机中建立虚拟建筑,该虚拟建筑提供从单一到完整、包含逻辑关系的建筑信息库。信息库…...
快速了解什么是跳跃表(skip list)
什么是跳跃表(skip list) 跳跃表(Skip List)是一种概率性的数据结构,它通过在多层链表的基础上添加“快速通道”来提高搜索效率。跳跃表的效率可以与平衡树相媲美,即在平均和最坏的情况下,查找…...
【Node.js入门】1.1Node.js 简介
Node.js入门之—1.1Node.js 简介 文章目录 Node.js入门之—1.1Node.js 简介什么是 Node.js错误说法 Node.js 的特点跨平台三方类库自带http服务器非阻塞I/O事件驱动单线程 Node.js 的应用场合适合用Node.js的场合不适合用Node.js的场合弥补Node.js不足的解决方案 什么是 Node.j…...
数据库 高阶语句
目录 数据库 高阶语句 使用select 语句,用order by来对进行排序 区间判断查询和去重查询 如何对结果进行分组查询group by语句 limit 限制输出的结果记录,查看表中的指定行 通配符 设置别名:alias 简写就是 as 使用select 语句&#x…...
jenkins Java heap space
jenkins Java heap space,是内存不够。 两个解决方案: 一,修改配置文件 windows系统中,找到Jenkins的安装路径, 修改jenkins.xml 将 -Xmx256m 改为 -Xmx1024m 或者更大 重启jenkins服务。 二,jenkins增…...
OpenCV校准棋盘集合
棋盘格可以与相机校准工具一起使用,例如ROS的camera_calibration包。您可以通过单击下面的任何链接免费下载 PDF 格式的各种棋盘,没有水印或广告。此外,还添加了基于 JavaScript 的棋盘生成器,允许您生成自定义尺寸。 提示&#…...
使用git将本地项目推送到远程仓库github
总结:本地项目通过git上传到github 1)、在本地创建一个版本库(即文件夹),通过 git init 把它变成Git仓库; 2)、把项目复制到这个文件夹里面,再通过 git add . 把项目添加到仓库; 3)、再通过 gi…...
Mybatis-Plus使用Wrapper自定义SQL
文章目录 准备工作Mybatis-Plus使用Wrapper自定义SQL注意事项目录结构如下所示domain层Controller层Service层ServiceImplMapper层UserMapper.xml 结果如下所示:单表查询条件构造器单表查询,Mybatis-Plus使用Wrapper自定义SQL联表查询不用,My…...
仿mudou库one thread one loop式并发服务器
目录 1.实现目标 2.HTTP服务器 实现高性能服务器-Reactor模型 模块划分 SERVER模块: HTTP协议模块: 3.项目中的子功能 秒级定时任务实现 时间轮实现 正则库的简单使用 通⽤类型any类型的实现 4.SERVER服务器实现 日志宏的封装 缓冲区Buffer…...
二十三种设计模式全面解析-组合模式与装饰器模式的结合:实现动态功能扩展
在前文中,我们介绍了组合模式的基本原理和应用,以及它在构建对象结构中的价值和潜力。然而,组合模式的魅力远不止于此。在本文中,我们将继续探索组合模式的进阶应用,并展示它与其他设计模式的结合使用,以构…...
智慧城市建设解决方案分享【完整】
文章目录 第1章 前言第2章 智慧城市建设的背景2.1 智慧城市的发展现状2.2 智慧城市的发展趋势 第3章 智慧城市“十二五”规划要点3.1 国民经济和社会发展“十二五”规划要点3.2 “十二五”信息化发展规划要点 第4章 大数据:智慧城市的智慧引擎4.1 大数据技术—智慧城…...
unity - Blend Shape - 变形器 - 实践
文章目录 目的Blend Shape 逐顶点 多个混合思路Blender3Ds maxUnity 中使用Project 目的 拾遗,备份 Blend Shape 逐顶点 多个混合思路 blend shape 基于: vertex number, vertex sn 相同,才能正常混合、播放 也就是 vertex buffer 的顶点数…...
asp.net core mvc之路由
一、默认路由 (Startup.cs文件) routes.MapRoute(name: "default",template: "{controllerHome}/{actionIndex}/{id?}" ); 默认访问可以匹配到 https://localhost:44302/home/index/1 https://localhost:44302/home/index https:…...
前端设计模式之【访问者模式】
文章目录 前言介绍实现优缺点应用场景后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端设计模式 🐱👓博主在前端领域还有很多知识和技术需要掌握,正在不断努力填补技术短板。(如果出现错误&#…...
通过docker-compose部署elk日志系统,并使用springboot整合
ELK是一种强大的分布式日志管理解决方案,它由三个核心组件组成: Elasticsearch:作为分布式搜索和分析引擎,Elasticsearch能够快速地存储、搜索和分析大量的日志数据,帮助用户轻松地找到所需的信息。 Logstash…...
【NLP】特征提取: 广泛指南和 3 个操作教程 [Python、CNN、BERT]
什么是机器学习中的特征提取? 特征提取是数据分析和机器学习中的基本概念,是将原始数据转换为更适合分析或建模的格式过程中的关键步骤。特征,也称为变量或属性,是我们用来进行预测、对对象进行分类或从数据中获取见解的数据点的…...
数据结构-单链表
1 链表的概念及结构 概念:链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的 。 从以上图片可以看出: 1.链式结构在逻辑上是连续的,但在物理上不一定是连续的。 2.现实中的节…...
红队系列-IOT安全深入浅出
红队专题 设备安全概述物联网设备层次模型设备通信模型 渗透测试信息收集工具 实战分析漏洞切入点D-link 850L 未授权访问 2017 认证绕过认证绕过 D-link DCS-2530Ltenda 系列 路由器 前台未授权RTSP 服务未授权 访问 弱口令命令注入思科 路由器 固件二进制 漏洞 IoT漏洞-D-Lin…...
【官方未公开的Agent-Ready设计白皮书】:基于Spring Boot 4.0 M3源码逆向工程,还原Agent生命周期管理协议与SPI扩展契约
第一章:Agent-Ready架构演进与Spring Boot 4.0 M3战略定位随着AI原生应用爆发式增长,传统微服务架构正经历向“Agent-Ready”范式的深度演进——系统需天然支持智能体(Agent)的动态注册、上下文感知、工具编排与自主决策。Spring …...
如何利用分区进行并行DML_开启会话并行针对不同分区同时执行更新
Oracle分区表UPDATE需同时满足四个条件才启用并行DML:会话级启用ENABLE_PARALLEL_DML、SQL中显式添加PARALLEL提示、WHERE条件实现精准分区裁剪、避免绑定变量导致裁剪失效。Oracle 分区表更新时 ENABLE_PARALLEL_DML 不生效?并行 dml 默认是关闭的&…...
【RAGFlow】如何通过API查询知识库内容
import requests import jsondata \{"dataset_ids": ["617892ce3d2111f1835f373a6cab5d12"],"question": "快乐8游戏中,总共有多少个号码?","top_k": 3}# 发送http请求 header {"Content-Type…...
终极指南:如何用浙江大学LaTeX模板快速完成专业学术论文排版
终极指南:如何用浙江大学LaTeX模板快速完成专业学术论文排版 【免费下载链接】zjuthesis Zhejiang University Graduation Thesis LaTeX Template 项目地址: https://gitcode.com/gh_mirrors/zj/zjuthesis 浙江大学学位论文LaTeX模板(zjuthesis&a…...
Snap.Hutao终极使用指南:免费开源的原神工具箱完全攻略
Snap.Hutao终极使用指南:免费开源的原神工具箱完全攻略 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 🧰 / Multifunctional Open-Source Genshin Impact Toolkit 🧰 项目地址: https://gitcode.com/GitHub_Trending/sn/Snap.Hu…...
nli-MiniLM2-L6-H768应用场景:数字政府12345热线工单与政策法规条款智能关联
nli-MiniLM2-L6-H768应用场景:数字政府12345热线工单与政策法规条款智能关联 1. 引言:政务热线面临的挑战 在数字政府建设中,12345政务服务便民热线每天都会收到大量市民咨询和投诉工单。传统处理方式面临两大痛点: 人工匹配效…...
Phi-mini-MoE-instruct效果实测:长文本摘要+关键信息抽取双任务
Phi-mini-MoE-instruct效果实测:长文本摘要关键信息抽取双任务 1. 模型概览 Phi-mini-MoE-instruct是一款轻量级混合专家(MoE)指令型小语言模型,在多项基准测试中展现出卓越性能: 代码能力:在RepoQA、Hu…...
别再只用水平IoU了!手把手教你用OpenCV计算旋转目标检测框的重叠度(附Python代码)
突破水平检测局限:OpenCV旋转框IoU计算实战指南 在遥感图像分析、自动驾驶感知和文档识别等场景中,目标物体往往呈现任意角度的旋转状态。传统水平检测框的IoU计算方法在这些场景下会严重高估检测质量——比如两个完全错位的长条形物体,仅因外…...
收藏备用|2026最新版大模型学习指南,程序员破局35岁危机必看
最近在各平台刷到崩溃😭,好多码农兄弟疯狂吐槽: “谁懂啊家人们!传统开发卷麻了,天天熬大夜改bug,技术更新比翻书还快,越干越没底气” “35岁焦虑直接拉满!守着老技术混日子&#…...
3分钟掌握Unlock-Music:免费音乐解密工具的完整使用指南
3分钟掌握Unlock-Music:免费音乐解密工具的完整使用指南 【免费下载链接】unlock-music 在浏览器中解锁加密的音乐文件。原仓库: 1. https://github.com/unlock-music/unlock-music ;2. https://git.unlock-music.dev/um/web 项目地址: htt…...
