自己写的纯暴力,WA了一个点90pts
查看原帖
自己写的纯暴力,WA了一个点90pts
689810
2020luke楼主2024/1/27 21:22

rt

#include<bits/stdc++.h>
using namespace std;
#define db double
db dis(db xa, db ya, db xb, db yb) {
	return sqrt((db)(abs(xb - xa) * abs(xb - xa) + abs(yb - ya) * abs(yb - ya)));
}
db wa[5010], wb[5010];
int main() {
	db xa, ya, xb, yb, xc, yc, xd, yd;
	db p, q, r;
	scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &xa, &ya, &xb, &yb, &xc, &yc, &xd, &yd);
	scanf("%lf%lf%lf", &p, &q, &r);
	db ans = dis(xa, ya, xd, yd);
	db dab = dis(xa, ya, xb, yb), dcd = dis(xc, yc, xd, yd);
	db xab = (db)(xb - xa) / (dab / p), yab = (db)(yb - ya) / (dab / p);
	db xcd = (db)(xd - xc) / (dcd / q), ycd = (db)(yd - yc) / (dcd / q);
	for(db i = 0; i <= 5000; i += 1.0) {
		db xxa = xa + xab * i * dab / p / 5000, yya = ya + yab * i * dab / p / 5000;
		db xxc = xc + xcd * i * dcd / q / 5000, yyc = yc + ycd * i * dcd / q / 5000;
		wa[(int)i] = dis(xa, ya, xxa, yya) / p;
		wb[(int)i] = dis(xd, yd, xxc, yyc) / q;
	}
	for(db i = 0; i <= 5000; i += 1.0) {
		for(db j = 0; j <= 5000; j += 1.0) {
			db tmp = wa[(int)i] + wb[(int)j];
			db xxa = xa + xab * i * dab / p / 5000, yya = ya + yab * i * dab / p / 5000;
			db xxc = xc + xcd * j * dcd / q / 5000, yyc = yc + ycd * j * dcd / q / 5000;
			tmp += dis(xxa, yya, xxc, yyc) / r;
			ans = min(ans, tmp);
		}
	}
	printf("%.2lf", ans);
	return 0;
}
2024/1/27 21:22
加载中...