求助,关于某个对答案的影响

P2619 [国家集训队] Tree I

对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


|