首页 > 其他分享 >[AtCoder Toyota2023 Spring Final] Git Gud

[AtCoder Toyota2023 Spring Final] Git Gud

时间:2023-11-22 17:34:23浏览次数:25  
标签:度数 AtCoder Git 联通 每个 Gud 合并 权值 考虑

拜谢 Magic Duck 大神。其次我很喜欢洛谷逆天翻译把大翻译成小……

首先考虑算一下贡献,考虑每个点的深度,一开始都是 1,进行合并以后相当于首先把两个端点的深度累计到答案里,然后再选择一边给它的联通块内每个点深度增加 1。那么容易发现我们可以算贡献转化为每个联通块权值为它向外的度数,每次合并任意选择一边将它的权值累积进答案(当然一定选择大的那边),然后合并两联通块。那么合并联通块度数相加还会损失 2,这里的一个技巧是把权值设为度数减二,这样就可以直接相加了。最后再把答案加上 \(2n - 2\),这是因为合并次数是已知的。于是这个问题得到了比较好的转化。

考虑一个结论:任何一次合并不会选择两个已经被合并过的联通块将它们合并。随便考虑四个块排成一排,发现总是能构造出一种依次合并进某个块的顺序,使得它优于分别合并两边再合并中间的边的方案。那么最优的合并顺序一定是选择一个根,然后依次把下面的节点合并进根里。此外,我们不妨假设任何一次合并时,根处的权值都大于被合并的另一个权值,否则换成下面那个点为根一定更优。

于是枚举这个根,问题变成了给定一棵有根树,每个点有点权,给每个点赋 \([1, n]\) 内互不相同的整数系数,要求父亲系数大于儿子,最大化系数乘点权的和。这是经典问题,考虑权值最大的点标号一定等于它父亲的标号减一,那么直接考虑把它合并进父亲,于是每个点有一个大小和一个权值和,我们容易发现它的“等效权值”就是它的权值和除以它的大小。于是用并查集之类的随便合并一下就可以了。

标签:度数,AtCoder,Git,联通,每个,Gud,合并,权值,考虑
From: https://www.cnblogs.com/kyeecccccc/p/17849893.html

相关文章

  • DPS Digit Sum
    题意求\(1\ton\)中有多少个数是\(d\)的倍数。\(n\le10^{10000}\)。Sol数位dp,设\(f_{i,j,1/0}\)表示第\(i\)位,膜\(d\)等于\(j\),是否贴住上限。转移是\(trivial\)的。Code#include<iostream>#include<algorithm>#include<cstdio>#includ......
  • AtCoder Beginner Contest 329
    劳累一天不该写题,启发式合并都写错了A-Spread(abc329A)题目大意给定一个字符串,将每个字符输出出来,中间留个空格。解题思路遍历输出即可。神奇的代码#include<bits/stdc++.h>usingnamespacestd;usingLL=longlong;intmain(void){ios::sync_with_std......
  • 39个你需要知道的Git命令
    在本文中,我整理了一些常用的Git命令,希望这些命令可以帮助你提升工作效率。初始化本地Git存储库gitinit克隆公共存储库gitclonerepo_url克隆私有仓库gitclonessh://[email protected]/[username]/[repository-name].git将文件添加到暂存区gitadd[file-name]......
  • git SSL certificate problem: unable to get local issuer certificate
    错误:gitSSLcertificateproblem:unabletogetlocalissuercertificate这个问题是由于没有配置信任的服务器HTTPS验证。默认,cURL被设为不信任任何CAs,就是说,它不信任任何服务器验证。解决方法gitconfig--globalhttp.sslVerifyfalse......
  • git clone 时拉取子模块
    gitclone时拉取子模块 对还未下载的项目:gitclone--recursive对已下载的项目:gitsubmodulesyncgitsubmoduleupdate--init--recursive......
  • git版本回退
    git版本回退转载:https://blog.csdn.net/u010980938/article/details/127090612?spm=1001.2101.3001.6650.3&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ERate-3-127090612-blog-133793801.235%5Ev38%5Epc_relevant_sort_base2&a......
  • Git学习笔记:基础使用
    本随笔用于记录随笔作者在一般情况下使用Git的一些步骤和操作,主要用于在经过一段时间没有使用Git后能够通过该随笔马上回忆起基础操作,所以该随笔一开始并不会介绍Git的高级特性。本随笔内容摘录自官方教程随笔作者还在学习当中,难免会出现书写上和技术上的错误,如果发现类似错误,欢......
  • AtCoder Beginner Contest(abc) 326
    B-326-likeNumbers难度:⭐题目大意如果一个三位数的百位和十位的乘积等于个位,那么这个数就是合法的;问大于等于n的最小的合法的数是多少;解题思路因为数据范围很小,所以可以直接暴力;神秘代码#include<bits/stdc++.h>#defineintlonglong#defineIOSios......
  • 一个Git clone仓库的指定目录命令对比国内外常见AI(六)使用小悟空
    通常情况下,我们会克隆整个Git仓库,但有时候我们只需要其中某一个目录或文件,这时候只克隆子目录会更加方便。这个需求好像不是经常用到,搜索结果也是五花八门,有些完全达不到要求,正好用这个机会测试一下最近大火的AI看看是否足够智能。小悟空(抖音出品,个人感觉普通提问回答还可以,专业提......
  • AtCoder Beginner Contest 329
    C-Countxxx题意是:给你一个字符串,求出字符串里面相同字母的子串数量思路:用map映射即可,取每个字母的最大长度,然后加起来usingnamespacestd;intmain(){ intn; strings; cin>>n>>s; map<char,int>mp; intct=1; for(inti=1;i<n;i++){ if(s[i]!=s[i-1]){ mp[s[......