AtCoder ABC 359 F 题解

本题要看出性质并进行验证,程序难度低。(官方 Editorial 似乎没有写证明过程?难道是过于显而易见了吗…)

题意

给你一个数组 a a a,对于一棵 n n n 个节点的树 T T T d i d_i di 为每个节点的度,定义 f ( T ) = ∑ i = 1 n d i 2 a i f(T)=\sum_{i=1}^{n}d_i^2a_i f(T)=i=1ndi2ai。求 f ( T ) f(T) f(T) 的最小值。

性质

式子:如果 ∑ i = 1 n d i = 2 n − 2 \sum_{i=1}^{n}d_i=2n-2 i=1ndi=2n2,对于任意的 d d d,一定有合法的树满足条件。
证明:

  1. 首先先证明一棵树的度数和是 2 n − 2 2n-2 2n2 n n n 个节点的树有 n − 1 n-1 n1 条边,每条边会被两头的节点算两次度,所以度数和是 2 ( n − 1 ) 2(n-1) 2(n1)
  2. 接着我们证明可以构造出这样一棵树满足条件。先将 d d d 数组从大到小排序,我们先满足 d d d 大的节点。举 n = 10 n=10 n=10 的例子:在这里插入图片描述
    这样每次加完点后再在新的点上连边,直到后面的 d d d 都是 1 1 1,无需添加。在 d = 1 d=1 d=1 之前,每次都会加上至少一个叶子节点(除第一次是 d i d_i di 个之外,每次加 d i − 1 d_i-1 di1 个叶子节点),保证不会没有上一次新加的点可以用来连新的边。最终的点数一定是 n n n,否则不满足度数和为 2 n − 2 2n-2 2n2。算一下每次新增点数, ( d 1 + 1 ) + ( d 2 − 1 ) + ( d 3 − 1 ) . . . + ( d n − 1 ) = 2 n − 2 − ( n − 2 ) = n (d_1+1)+(d_2-1)+(d_3-1)...+(d_n-1)=2n-2-(n-2)=n (d1+1)+(d21)+(d31)...+(dn1)=2n2(n2)=n,也是对的。

思路

我们先将所有 d i d_i di 都设成 1 1 1,然后循环 n − 2 n-2 n2 次,每次选择一个使 f ( T ) f(T) f(T) 增加量最小的 d i d_i di 进行加 1 1 1,这里可以用 p r i o r i t y _ q u e u e priority\_queue priority_queue 找到最小的。

代码

#include<bits/stdc++.h>
using namespace std;
int n;
long long ans,a[200005],d[200005];
priority_queue<pair<long long,int>,vector<pair<long long,int> >,greater<pair<long long,int> > > q;
//first:如果将d[pos]加1会对f造成多少增加量  second:pos
int main(){cin>>n;for(int i=1;i<=n;i++) cin>>a[i];for(int i=1;i<=n;i++){d[i]=1;ans+=a[i];q.push(make_pair(3*a[i],i));}for(int i=1;i<=n-2;i++){pair<long long,int> p=q.top();q.pop();ans+=p.first;d[p.second]++;q.push(make_pair(((d[p.second]+1)*(d[p.second]+1)-d[p.second]*d[p.second])*a[p.second],p.second));}cout<<ans<<endl;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1527515.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Gitness 基础安装

文章目录 Docker 安装注册账户创建项目导入已有仓库配置 Github Token同步源代码仓库 官方链接 Gitness was the next step in the evolution of Drone, from continuous integration to source code hosting, bringing code management and pipelines closer together. Gitnes…

八、Maven总结

1.为什么要学习Maven&#xff1f; 2.Maven 也可以配华为云和腾讯云等。 3.IDEA整合Maven 4.IDEA基于Maven进行工程的构建 5.基于Maven进行依赖管理&#xff08;重点&#xff09; 6. Maven的依赖传递和依赖冲突 7. Maven工程继承和聚合 8.仓库及查找顺序

解决面板安装Node.js和npm后无法使用的问题

使用面板&#xff08;BT&#xff09;安装Node.js和npm后&#xff0c;可能会遇到如下问题&#xff1a;即使成功安装了Node.js和npm&#xff0c;服务器仍提示“未安装”&#xff0c;在命令行中使用 node -v 或 npm -v 也没有任何响应。这种问题通常是由于环境变量配置错误或路径问…

【Hot100】LeetCode—215. 数组中的第K个最大元素

目录 1- 思路快速选择 2- 实现⭐215. 数组中的第K个最大元素——题解思路 3- ACM实现 原题连接&#xff1a;215. 数组中的第K个最大元素 1- 思路 快速选择 第 k 大的元素的数组下标&#xff1a; int target nums.length - k 1- 根据 partition 分割的区间来判断当前处理方式…

使用Node-API进行线程安全开发

一、Node-API线程安全机制概述 Node-API线程安全开发主要用于异步多线程之间共享和调用场景中使用&#xff0c;以避免出现竞争条件或死锁。 1、适用场景 异步计算&#xff1a;如果需要进行耗时的计算或IO操作&#xff0c;可以创建一个线程安全函数&#xff0c;将计算或IO操作放…

Linux block_device gendisk和hd_struct到底是个啥关系

本文的源码版本是Linux 5.15版本&#xff0c;有图有真相&#xff1a; 1.先从块设备驱动说起 安卓平台有一个非常典型和重要的块设备驱动&#xff1a;zram&#xff0c;我们来看一下zram这个块设备驱动加载初始化和swapon的逻辑&#xff0c;完整梳理完这个逻辑将对Linux块设备驱…

旅拍景区收银系统+押金原路退回+服装租赁-SAAS本地化及未来之窗行业应用跨平台架构

一、景区旅拍一体化系统 序号系统说明1提成系统用于给照相馆介绍照相拉客的人自动计算提成2押金系统用于服装租赁&#xff08;汉服租赁&#xff09;&#xff0c;设备租赁 &#xff0c;支持押金原路退回3收银系统计算每天收银汇总&#xff0c;月度收银汇总&#xff0c;支出4提成…

云原生之高性能web服务器学习(持续更新中)

高性能web服务器 1 Web服务器的基础介绍1.1 Web服务介绍1.1.1 Apache介绍1.1.2 Nginx-高性能的 Web 服务端 2 Nginx架构与安装2.1 Nginx概述2.1.1 Nginx 功能介绍2.1.2 基础特性2.1.3 Web 服务相关的功能 2.2 Nginx 架构和进程2.2.1 架构2.2.2 Ngnix进程结构 2.3 Nginx 模块介绍…

PyInstaller问题解决 onnxruntime-gpu 使用GPU和CUDA加速模型推理

前言 在模型推理时&#xff0c;需要使用GPU加速&#xff0c;相关的CUDA和CUDNN安装好后&#xff0c;通过onnxruntime-gpu实现。 直接运行python程序是正常使用GPU的&#xff0c;如果使用PyInstaller将.py文件打包为.exe&#xff0c;发现只能使用CPU推理了。 本文分析这个问题…

流媒体与直播的基础理论(其一)

欢迎诸位来阅读在下的博文~ 在这里&#xff0c;在下会不定期发表一些浅薄的知识和经验&#xff0c;望诸位能与在下多多交流&#xff0c;共同努力 文章目录 一、流媒体简介二、流媒体协议常见的流媒体协议 三、视频直播原理与流程通用的视频直播模型视频直播链路 一、流媒体简介…

隐私计算实训营:联邦学习在垂直场景的开发实践

纵向联邦学习 纵向联邦学习的参与方拥有相同样本空间、不同特征空间的数据&#xff0c;通过共有样本数据进行安全联合建模&#xff0c;在金融、广告等领域拥有广泛的应用场景。和横向联邦学习相比&#xff0c;纵向联邦学习的参与方之间需要协同完成数据求交集、模型联合训练和…

Openharmony 下载到rk3568实现横屏

前言&#xff1a; Openharmony 源码版本4.1 release 板子&#xff1a;rk3568 1.修改“abilities”中的“orientation”实现横竖屏 entyr->src->module.json5文件里面添加 "orientation": "landscape", 2.修改系统源码属性实现横竖屏切换 通过这…

以太网--TCP/IP协议(二)

上文中讲述了IP协议&#xff0c;本文主要来讲一下TCP协议。 TCP协议 &#xff08;1&#xff09;端到端通信 直接把源主机应用程序产生的数据传输到目的主机使用这 些数据的应用程序中&#xff0c;就是端到端通信。 &#xff08;2&#xff09;传输层端口 公认端口&#xff0…

ansible--role

简介 roles是ansible&#xff0c;playbooks的目录的组织结构&#xff0c;将代码或文件进行模块化&#xff0c;成为roles的文件目录组织结构。 易读&#xff0c;代码可冲哟美好&#xff0c;层次清晰 目录机构 mkdir roles/nginx/{files,handlers,tasks,templates,vars} -ptou…

Google Play结算防掉单方案

我们公司的产品主要是出海产品,使用的是Google Play支付,但是在上线以后,经常有客诉,说支付以后,权益没有到账,于是对整个Google支付体系做了研究了一下。 我们的整个支付流程图大概如下: 其中后端参考的文档地址为: https://developers.google.com/android-publishe…

GB35114 USC安防平台 中星微国密摄像机配置 流程

中星微国密摄像机配置介绍 如下以中星微VS-IPC8021S-Y-T4摄像机为例&#xff0c;需要先各自获取p10文件&#xff0c;并通过证书签发机构或者测试SM2证书签发获取证书。 网络配置如下: 摄像机的IP地址为192.168.1.108&#xff0c;国标ID为34020000001320000015 系统的IP地址…

C#/.NET/.NET Core推荐学习路线文档文章

前言 专门为C#/.NET/.NET Core推荐学习路线&文档&文章提供的一个Issues&#xff0c;各位小伙伴可以把自己觉得不错的学习路线、文档、文章相关地址分享出来&#x1f91e;。 https://github.com/YSGStudyHards/DotNetGuide/issues/10 &#x1f3f7;️C#/.NET/.NET Cor…

【LVI-SAM】激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节

激光雷达点云处理特征提取LIO-SAM 之FeatureExtraction实现细节 1. 特征提取实现过程总结1.0 特征提取过程小结1.1 类 FeatureExtraction 的整体结构与作用1.2 详细特征提取的过程1. 平滑度计算&#xff08;calculateSmoothness()&#xff09;2. 标记遮挡点&#xff08;markOcc…

nvm及nodejs安装相关

安装 1.清空文件夹&#xff0c;卸载nvm及nodejs 2.下载安装包 https://github.com/coreybutler/nvm-windows/releases &#xff08;也下载有&#xff09; 3.安装nvm 地址写D:/nvm和D:/nodejs 4.安装nodejs nvm ls available //查询版本 nvm install 16.20.2 //安装对应版…

【H2O2|全栈】关于HTML(1)认识HTML

HTML相关知识 目录 前言 准备工作 WEB前端是什么&#xff1f; HTML是什么&#xff1f; 如何运行HTML文件&#xff1f; 标签 概念 分类 双标签和单标签 行内标签和块标签 HTML文档结构 预告和回顾 UI设计相关 Markdown | Md文档相关 项目合作管理相关 后话 前…