对8起,标题的“细节”不知道为啥没了QAQ
by 摸鱼酱 @ 2021-04-19 21:04:23
@[摸鱼酱](/user/173685) wqs 二分是每转移一次加上二分的 mid,跑最小生成树的时候边权就应该加上了,不然转移是错的。
by сyn2006 @ 2021-04-19 21:15:44
@[сyn2006](/user/404963) 实现的过程中并没有把非最终答案的生成树边权拿来作比较,而排序是这样的:
```
struct node{
int u,v,w,c;
bool operator < (const node &x) const {
return (w+c*mid!=x.w+x.c*mid)?(w+c*mid<x.w+x.c*mid):(c>x.c);
}
}e[N];
```
其中白边的c是1。
这样的话为什么会对答案造成影响呢?或者能麻烦您举出一例hack数据吗/kk,我理解能力有点差,抱歉
by 摸鱼酱 @ 2021-04-19 21:22:38
抱歉我眼瞎……
我感觉这代码好奇怪啊……有时候不一定刚好切到,就是根本不会出现 `now = k` 的情况,但是也能 AC……
by сyn2006 @ 2021-04-19 21:32:10
我也觉得...但是数据保证说一定有解,也不知道为啥优先白边能达到AC。
by 摸鱼酱 @ 2021-04-19 22:26:12
就是,你 wqs 二分的时候,是有可能切不到 need 这个点,这个时候证明,need 在一条直的线段上,你这个二分过程只能切到两个线段的端点,这个时候用端点来计算是错的,把 need 代入回去才是对的,这就是两个写法的区别(
by Miko35 @ 2021-04-20 14:55:35
计算不一定非要切到 need 这个点上,只要能求出 f(need) 即可(
by Miko35 @ 2021-04-20 14:58:18
@[Cirno_9](/user/78372) 好的,非常感谢
by 摸鱼酱 @ 2021-04-20 18:02:36