为什么 SA 的函数不能取合力大小而要取绳子总长度
查看原帖
为什么 SA 的函数不能取合力大小而要取绳子总长度
592895
y_kx_b楼主2023/3/7 12:04

rt,一开始我想物体合力为 0 时稳定,那么就不断退火到合力为 0 时输出答案即可。

但是样例一直过不去,合力一直都是 2.99853 左右 一直没法随到最优点(0)……

各种调参,时限开到 8s,仍然和答案差一大截……

看了下题解,换了个函数之后就可以过样例了

啊所以请问函数取合力大小时非常难随到答案呢?

代码:

#define db double
db calc(db x, db y) {
	db dx = 0, dy = 0;// 合力在 x 方向的分力,合力在 y 方向的分力
	for(int i = 1; i <= n; i++) {
		db dddx = p[i].x - x, dddy = p[i].y - y;
		db r = sqrt(dddx * dddx + dddy * dddy);//两点距离
		dx += dddx / r * w[i], dy += dddy / r * w[i];//合力等于每个分力的和
	}
	db res = sqrt(dx * dx + dy * dy);//合力大小
	if(ans > res) ans = res, ansx = x, ansy = y;
	return res;
}

先去吃饭了,12:30 左右才能回来,不能立即回复,敬请谅解

2023/3/7 12:04
加载中...