「考试」weight

正解是树剖。

首先Kru求最小生成树。

然后分别考虑树边和非树边的答案。

首先是非树边,非树边链接的两个点在MST上能够构成一条链。

这条链上最大的那条边-1就是这条边的答案。

为什么。

模拟Kru的过程。如果这条边在树上那一条之前的话。这条边的起点和终点两个集合必然还没有链接。

因为之前那树上那一条断了树链就断了。

那么这条边会成为树边。

然后是树边。

树边的答案就更加浅显一点了,我们的非树边会威胁树边的地位。

也就是说在非树边可能到达某一个树边前面的话,这条边就会成为树边。

那么这条非树便就可以更新一整条树链的答案了。

对于每条树边,答案取最小值,如果仍然是INF,输出-1,否则输出这个值-1。

然后以上所有操作可以用树链剖分解决。

得解。

原文地址:https://www.cnblogs.com/Lrefrain/p/11566890.html

时间: 2024-11-04 13:58:17

「考试」weight的相关文章

「考试」糊涂图

不知道为啥达哥说简单...... 考场上打了俩小时啥也没写出来导致崩盘了. 但是真的是好题啊. 要求在$NIM\ DAG$上随意加一条边,这条边只能走一次,求$Nim$博弈的胜率最大值和平均值. 考虑求出两个数组$dp[i]$和$g[i][0/1]$ $dp[i]$表示到达的地方是$i$的情况下不论是谁的胜率. $g[i][0/1]$表示到达的点是$i$的情况下,当前要走的人是达哥/B哥的概率. 两个数组都很好求,第一个反向拓扑即可,叶子节点都为0. $$dp[t]+=\frac{(1-dp[x

「考试」小P的生成树

考场上想到一半正解,没想到随机化,不然也许能够$A$掉. 题目所说的其实就是向量加法,求模长最长的向量生成树. 我们考虑对于两个向量,必然在平行边形对角线方向上,他们的投影和是最大的,长度就是对角线长度. 如果精度开到$1e-3$我们完全可以枚举最终的和向量的角度,因为只有在对角线,也就是正确的方向上,向量的模长才是最大的,所以也就是说即使枚举的角度不可构成,它得出的解也必然不是最优解. 但是精度开的很高,枚举复杂度过高了.(随机化角度就能A) 接着考虑对于某条向量有两种表达形式: 1.$(\a

「考试」老司机的狂欢

啊考场上没想到. 直接二分答案,然后$nlogn$求解最长上升序列来$check$是否大于$K$即可. 然后恶心的是要求输出方案,而且...字典序最小. 我们考虑二分出答案之后求出方案. $LIS$的过程其实类似于建树,我们要把当前的决策挂在当前树上某一深度的点中,字典序最小的方案下面. 那么当我们比较两个方案的时候,只需要求出他们在$LIS$树上的$LCA$,那么在$LCA$以上的部分完全相同,所以只需要比较他们在$LCA$一下的部分中最小值的大小,较小的更优,一边跑$LIS$一边跑倍增$LC

「考试」$5T$

啊因为最近题实在是好啊,只能四五篇四五篇写了. T1. 括号序列的确简单. 当我们维护左右$cnt$后. 到一个左括号的地方的话. 答案就是:$$\sum\limits_{i=1}^{min(lc,rc)}\binom{lc-1}{i-1}\binom{rc}{i}$$ 因为要固定一个来去重. 等价于: $$\sum\limits_{i=0}^{n}\binom{n}{i}\binom{m}{i}=\sum\limits_{i=0}^{n}\binom{n}{n-i}\binom{m}{i}$$

「考试」省选5

这套做的比较顺. 题也很好. T1 一个简单的贪心. 我们二分能够无伤通过的蛤个数. check就用之前用烂了的队列来check. 然后我们知道无伤通过最多一定对应这所有的石头被踩完,因为这样可以让每只蛤单次跳跃距离的最大值尽量的小. 这也就是说两种最优操作是合在一起的,有点像\(CSP-2019 D2T2\). 那么,二分出来剩下的就是必然要跳出大于\(D\)的了,我们取最小的几只,让他们一步从\(1\)跳过去. 另外一种情况是没有蛤可以无伤过. 这时候就让最便宜的那只去踩地雷,踩过所有的石头

「考试」省选7

比较简单的一场,但是我好像做的xibalan. 上来看了一小时题啥也不会. 然后发现\(T2\)数据范围像是分块. 然后傻逼一样去打根号算法. 最终结果当然是死了,到九点半也没写出来. 然而早就会\(T1\)正解了,于是先五分钟拿了\(T3\)的30分(为啥60那么好打..). 然后半个小时打完\(T1\)(临接表被卡常到90?) 然后继续搞T2最后弄出来了. 剩下十分钟啥也没干,三分块长从\(12s\)变成了\(2s\). T1 原题,\(xor\)差分之后就没了. T2 数据结构题毫无思维难

「考试」省选模拟12

状态不好考的不行(x 还是在家里不够专注吧(? T1 一个简单的离散化+bfs 细节不少 一个区间直接把两个端点都离散进去就行了. 统计答案的时候按块统计答案. T2 减枝的搜索. 不是特别难. 发现其实格子并不是很多. 被\(K\)给限制住了. 太多的都是0. 那么\(n+m-1\)的大小必然是小于等于10的. 直接爆搜. 剪枝要用到一个小技巧. 当前如果许多个颜色并没有放过,那么我放上一种颜色搜索一下得到答案,那么这几个颜色是等价的可以直接不重复搜索,然后将答案乘上个数. T3 挺厉害的\(

「考试」数学专测4

该来的总得来.. T1 记住要碰到分数问题就用01分数规划. 其他的倒还简单. 用到了一个类似猎人杀的定义. 对于一轮来说可以扩展轮的长度为直到决出胜负,这样的概率和期望是不变的. T2 不知道在说什么. T3 变元矩阵树定理+高斯消元 其实正解不是高斯消元是二维拉格朗日插值(我不会 考场上瞎懵了个高斯消元就过了地说. 看我上一篇线代的博客,有介绍矩阵树定理. 设一条边的边权为\(w_i\),一棵树的边集为\(T\). 那么矩阵树定理求出的其实是: \[\sum\limits_{T}\prod\

「考试」图论专测1

挺懵的... T1 实际上不难. 发现对于同一条边来说. 我们的答案关于我们取得点在这个边上的位置是一个单谷函数,因为两侧取max. 然后直接三分边上所在的位置. check的时候首先用随便什么最短路处理出每个点之间互相的距离即可求值了. T2 很棒的二进制分组. 我们把这种满足要求的路径拆成三段\(1->a->b->n\). 第一段:定向之后的\(1->a\)的最短路. 第二段:\(a->b\)之间不走任何最短路边的最短路. 第三段:定向之后的\(b->n\)的最短路