首页 > 其他分享 >题解 GDKOI2023 普及 D2T4

题解 GDKOI2023 普及 D2T4

时间:2023-03-16 13:35:15浏览次数:42  
标签:GDKOI2023 斜率 题解 最小 生成 leq 关键 权值 D2T4

口胡。

problem

一个图,边带权,有 \(k\leq 50\) 个关键边,对于 \(0\leq i\leq k\) 求出恰好含有 \(i\) 条关键边的最小生成树的权值和。\(n\leq 10000,m\leq 10^6,k\leq 50\)。

solution

WQS 二分。

考虑记 \(f_x\) 表示 \(i=x\) 的答案。在平面上描出 \((i,f_x)\) 这些点,我们用一个 dfs 发现这些点是一个下凸包

(证明:考虑不管限制跑最小生成树会用到 \(t\) 个关键边,那么 \(x\leq t\) 肯定单调不增,\(x\geq t\) 肯定单调不减(好吧是错的))

用一条斜率为 \(k\) 的直线去切这个凸包,假设切到 \(x\),那么写出这条直线是:\(f_x=kx+b\to b=f_x-kx\)。
由于这个 \(b\) 是最小的(不然就不叫切),我们可以认为我们是将所有关键边的权值加上 \(-k\) 之后的最小生成树,拿到了 \(x\) 条边。

随着斜率的增加,\(x\) 也在增加。
因此我们二分斜率 \(k\),使所有关键边的权值减去 \(k\) 跑最小生成树,得到 \(x\),根据 \(x\) 决定 \(k\) 往哪一边跑。

细节:

  • 一上来就考虑 \(i=0\),将没有用的非关键边扔掉。因为随着 \(i\) 的增加,后面的边也绝不可能用到。
  • 如果关键边自己搞出来环,不管它,等到后面加到不能再加,就把这些边按边权大小一个一个加上去。

标签:GDKOI2023,斜率,题解,最小,生成,leq,关键,权值,D2T4
From: https://www.cnblogs.com/caijianhong/p/17222170.html

相关文章

  • NOI 2008 志愿者招募 题解 (神奇费用流)
    洛谷题目链接思路很清奇的网络流题这种第i天需要至少\(a_i\)人的限制,按常规思路容易想到在i号点和i+1号点之间连一条容量为\(a_i\)的边,并强制流满。但是如果雇佣了一个人......
  • GDKOI2023 游记
    这两天的模拟赛是GDKOI。D1T1和D2T1都是大水题,不仅简单而且数据水,放过了许多错解。D1T2和D2T2是困难题,D1T3和D2T3是可做题。听说D2T3用到的是一个冬令营介绍......
  • ARC153B Grid Rotations 题解
    B-GridRotations(atcoder.jp)SOLUTION我表示大为不理解。。。。这个简单......
  • 選択問題の正答はすべて同じ選択肢で… 题解
    题目传送门由于数据问题,我们可以使用C++STL里的map存储企鹅君选择的答案以及次数。先定义一个map,用来储存答题情况。接着将企鹅君的答案存入map,顺便求出最大值。m......
  • 洛谷-P9147 题解
    正文最坏时间复杂度:\(\mathcal{O}(n)\)真不愧是签到题,差点没签上。。。我相信题意各位肯定很理解了,非常简单,但如何解决就是个问题。首先考虑朴素解法,建立一个求最长连......
  • 【题解】P6667 [清华集训2016] 如何优雅地求和
    orzfjy666orzfjy666orzfjy666神·fjy666·拉普拉斯·爱因斯坦大帝于5min内爆切了此题,膜拜!思路斯特林数。注意到\(f(k)\)是多项式而式子中含有组合数,于......
  • 公众号前端访问后台500 疑难问题解决
     后台日志联调,发现前端根本无法进入后台方法中去经过仔细对比发现referrer请求过长在主设置页面增加<metaname="referrer"content="origin">配置问题解决 ......
  • 阿里一面:15道网络安全真题解析,你能答对几道?
    前言网络安全是一个广阔的领域,面试过程中可能会提出各种各样的问题。招聘人员主要关注技术方面以及工具和技术知识,以确保框架安全。 以下是在网络安全领域寻求工作时可能......
  • 2023.3.14 状压 dp 模拟赛题解
    好强啊。不说是谁了,都好强啊呜呜呜。   首先T1的一个优化luoguP1842奶牛玩杂技,需要一个贪心排序来优化序列顺序。关于贪心排序:像这样有两种及以上性质的序列,......
  • 2020年河南省CCPC 题解
    2020年河南省CCPC题解ProblemA.班委竞选设ax为第x类班干部最大票数。从小到大枚举学号i,若新x>ax则更新ax并且记录i为ansx的答案voidsolve(){intn=re......