⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pku1408.cpp

📁 这是ACM 方面的资料 是PKU的 北京大学的出来的
💻 CPP
字号:
#include <stdio.h>
#include <math.h>

void calc_poi(double a, double b, double c, double d, double ans[])
{
	ans[0] = (c * (a - b) - a) / ((b - a) * (d - c) - 1);
	ans[1] = (a * (c - d) - c) / ((d - c) * (b - a) - 1);
}

double calc_area(double p1[], double p2[], double p3[], double p4[])
{
	double area;
	area = p1[0] * p2[1] - p1[1] * p2[0] + p2[0] * p3[1] - p2[1] * p3[0] 
		+  p3[0] * p4[1] - p3[1] * p4[0] + p4[0] * p1[1] - p4[1] * p1[0];
	return fabs(area);
}

int main()
{
	double a[32], b[32], c[32], d[32], area, max;
	double p[4][2];
	int i, j;
	int n;
	double ans[2];
	while (scanf("%d", &n) != -1 && n != 0)
	{
		a[0] = b[0] = c[0] = d[0] = 0;
		a[n+1] = b[n+1] = c[n+1] = d[n+1] = 1;

		for (i = 1; i <= n; i++)
		{
			scanf("%lf", &a[i]);
		}
		for (i = 1; i <= n; i++)
		{
			scanf("%lf", &b[i]);
		}
		for (i = 1; i <= n; i++)
		{
			scanf("%lf", &c[i]);
		}
		for (i = 1; i <= n; i++)
		{
			scanf("%lf", &d[i]);
		}

		for (i = 0, max = 0; i <= n; i++)
		{
			for (j = 0; j <= n; j++)
			{
				calc_poi(a[i], b[i], c[j], d[j], p[0]);
				calc_poi(a[i], b[i], c[j+1], d[j+1], p[1]);
				calc_poi(a[i+1], b[i+1], c[j+1], d[j+1], p[2]);
				calc_poi(a[i+1], b[i+1], c[j], d[j], p[3]);
				area = calc_area(p[0], p[1], p[2], p[3]);
				if (area > max)
				{
					max = area;
				}
			}
		}

		printf("%.6lf\n", max / 2.0);
	}
	
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -