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

2023.11.10联赛 T3题解

题目大意

题目思路

感性理解一下,将一个数的平方变成多个数平方的和,为了使代价最小,这些数的大小应该尽可能的平均。

我们可以将 ∣ b i − a i ∣ |b_i-a_i| biai放入大根堆,同时将这个数划分的次数以及多划分一段减少的代价放入,按减少的代价从大到小取。

总时间复杂度为 O ( m log ⁡ n ) \mathcal O(m \log n) O(mlogn)

具体实现参考代码。

#include<bits/stdc++.h>
using namespace std;
int n,m;
long long a[100000+10];
__int128 ans=0;
struct node
{long long x,l,val;bool operator<(const node &a)const {return val<a.val;}
};
priority_queue<node> p;
const long long mod=998244353;
long long read()
{long long s=0,w=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}while(ch>='0'&&ch<='9')s=s*10+(ch-'0'),ch=getchar();return s*w;
}
long long cal(long long x,long long y)
{long long sum=0;sum=(x%y)*(x/y+1)*(x/y+1)+(y-x%y)*(x/y)*(x/y);return sum;
}
void write(long long s)
{if(s>9)write(s/10);putchar(s%10+'0');
}
int main()
{freopen("attend.in","r",stdin);freopen("attend.out","w",stdout);n=read(),m=read();for(int i=1;i<=n;++i)a[i]=read();for(int i=1;i<=n;++i){int x=read();a[i]=abs(a[i]-x);if(a[i])p.push((node){a[i],1,a[i]*a[i]-cal(a[i],2)}),ans+=a[i]*a[i];}if(p.empty()){printf("0");return 0;}if(m<p.size()){printf("-1");return 0;}m-=p.size();for(int i=1;i<=m;++i){node k=p.top();p.pop();ans-=k.val;p.push((node){k.x,k.l+1,cal(k.x,k.l+1)-cal(k.x,k.l+2)});}ans=ans%mod;write(ans);return 0;
}

相关文章:

  • 公众号标签
  • MySQL中UUID主键的优化
  • 官媒代运营:让大众倾听品牌的声音
  • 投票助手图文音视频礼物打赏流量主小程序开源版开发
  • 春江天玺89㎡三室两厅,现代轻奢丨不止风格更是一种生活态度。福州中宅装饰,福州装修
  • Python四种常见实现排序方法,干活教程分享~
  • 【数据结构】链表经典OJ题,常见几类题型(一)
  • django+drf+vue 简单系统搭建 (2) - drf 应用
  • 3D全景技术,为我们打开全新宣传领域
  • HBase导出建表语句
  • 怎样使用ovsyunlive在web网页上直接播放rtsp/rtmp视频
  • GZ038 物联网应用开发赛题第2套
  • 麒麟KYLINIOS软件仓库搭建03-软件仓库添加新版本的软件包
  • 客户服务质量提升的三种思路
  • C# WebSocket 服务器
  • 【RocksDB】TransactionDB源码分析
  • 【前端学习】-粗谈选择器
  • Android框架之Volley
  • codis proxy处理流程
  • Django 博客开发教程 8 - 博客文章详情页
  • Flannel解读
  • js操作时间(持续更新)
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • mysql innodb 索引使用指南
  • Mysql5.6主从复制
  • Spring思维导图,让Spring不再难懂(mvc篇)
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • 复杂数据处理
  • 基于游标的分页接口实现
  • 排序算法学习笔记
  • 区块链将重新定义世界
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 三分钟教你同步 Visual Studio Code 设置
  • 通过git安装npm私有模块
  • 你对linux中grep命令知道多少?
  • 《码出高效》学习笔记与书中错误记录
  • (C#)获取字符编码的类
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (博弈 sg入门)kiki's game -- hdu -- 2147
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (算法)Game
  • (转)http-server应用
  • (转)Linux下编译安装log4cxx
  • (转)负载均衡,回话保持,cookie
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET Framework杂记
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .NET 的静态构造函数是否线程安全?答案是肯定的!
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .net访问oracle数据库性能问题
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • .NET中winform传递参数至Url并获得返回值或文件
  • @Autowired @Resource @Qualifier的区别
  • @DateTimeFormat 和 @JsonFormat 注解详解