社区讨论

【退火】线段退化为点/斜率为 0 的解决方法

P2571[SCOI2010] 传送带参与者 2已保存回复 2

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
2 条
当前快照
1 份
快照标识符
@m38t3vrf
此快照首次捕获于
2024/11/08 22:02
去年
此快照最后确认于
2025/11/04 15:06
4 个月前
查看原帖
我的退火是随机横坐标,然而当斜率为零时会输出 nan 或乱数
于是你可以:
C
    scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&ax,&ay,&bx,&by,&cx,&cy,&dx,&dy);
    if(bx-ax==0) bx-=0.000001;
    k1=(by-ay)/(bx-ax);
    if(dx-cx==0) dx-=0.000001;
    k2=(dy-cy)/(dx-cx);
注意,退火的随机数最好对 10001000 取模(我的改了 8080 -> 100100
C
inline double rd(int low=0,int up=1e3)
{
    int _mod=up-low;
    return (double)(rnd()%2?1:-1)*((rand()^rand())*rand()%_mod+low);
}
这里谢谢 @lihe_qwq 大佬 Orz

回复

2 条回复,欢迎继续交流。

正在加载回复...