萌新求调,玄关
查看原帖
萌新求调,玄关
990387
Leo11楼主2024/5/4 19:15

40是怎么回事?40是怎么回事?

#include<bits/stdc++.h>
using namespace std;
double l, r, a, b, c, minn = 1e30 + 7, x[11], y[11];
int main()
{
	cin >> l >> r;
	for(int i = 1; i <= 3; i++)
	{
		cin >> x[i] >> y[i];
	}
	a = abs(sqrt((x[1] - x[2]) * (x[1] - x[2]) + (y[1] - y[2]) * (y[1] - y[2])));
	b = abs(sqrt((x[1] - x[3]) * (x[1] - x[3]) + (y[1] - y[3]) * (y[1] - y[3])));
	c = abs(sqrt((x[2] - x[3]) * (x[2] - x[3]) + (y[2] - y[3]) * (y[2] - y[3])));
	double p = (a + b + c) / 2;
	double ans = sqrt(p * (p - a) * (p - b) * (p - c));
	if(l <= 0.5 && r >= 0.5)
	{
		printf("%lf", ans / 4);
		return 0;
	}
	for(double i = l; i <= r; i += 0.0000001)
	{
		double a1 = x[3] - i * abs(x[3] - x[1]), b1 = y[3] - i * abs(y[3] - y[1]);
		double a2 = x[1] - i * abs(x[2] - x[1]), b2 = y[1] - i * abs(y[2] - y[1]);
		double a3 = x[2] - i * abs(x[3] - x[2]), b3 = y[2] - i * abs(y[3] - y[2]);
		a1 = abs(a1), b1 = abs(b1);
		a2 = abs(a2), b2 = abs(b2);
		a3 = abs(a3), b3 = abs(b3);
		//cout << a1 << " " << b1 << "\n" << a2 << " " << b2 << "\n" << a3 << " " << b3 << "\n";
		double A = sqrt((a1 - a2) * (a1 - a2) + (b1 - b2) * (b1 - b2));
		double B = sqrt((a1 - a3) * (a1 - a3) + (b1 - b3) * (b1 - b3));
		double C = sqrt((a3 - a2) * (a3 - a2) + (b3 - b2) * (b3 - b2));
		double X = (A + B + C) / 2;
		double cnt = sqrt(X * (X - A) * (X - B) * (X - C));
		//cout << cnt << "\n";
		minn = min(minn, cnt);
	}
	printf("%lf", minn);
}
2024/5/4 19:15
加载中...