刚学DP1ms萌新求助

P1417 烹调方案

Link_Space @ 2020-11-30 07:54:08

为什么这道题我的比较函数这样写

bool cmp(node x,node y)
{
    return x.ord > y.ord;
}

其中ord

food[i].ord = (double)food[i].c / food[i].b;

这样写是错的,但是我改成

bool cmp(node x,node y)
{
    return x.c * y.b < y.c * x.b;
}

这样就对了,这是为什么??

我只不过将两边同时除以一个x.b*y.b

难道不应该是等价的吗??求大佬


by wwlw @ 2020-11-30 08:01:43

精度


by 矢信 @ 2020-11-30 08:16:19

tm直接扔出带师球捕捉大佬


by 素质玩家孙1超 @ 2020-11-30 08:35:18

@yujiaruidashuaib 理论上是等价的,但实际有精度问题,在实现中应该尽量避免除法,最好可以用乘法代替


|