专栏文章

OIer题解:P10410 「QFOI R2」寺秋山霭苍苍

P10410题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@minmrfc1
此快照首次捕获于
2025/12/02 04:57
3 个月前
此快照最后确认于
2025/12/02 04:57
3 个月前
查看原文

分析

本题的核心是将几何问题转化为二次函数极值问题:通过推导面积与 pp 的二次函数关系,利用抛物线的单调性和顶点特性,在指定区间内快速找到最小值。解题的关键在于正确推导 S(p)S(p) 的表达式,避免陷入复杂的几何计算,如海伦公式,从而兼顾精度与效率。
那么我们就可以定义一个函数 S()S(),计算面积。

Code:

CPP
#include <bits/stdc++.h>
using namespace std;
double S (double p, double S0) {
	return S0 * (3 * p * p - 3 * p + 1);
}
int main () {
	double l, r, x1, y1, x2, y2, x3, y3;
	cin >> l >> r >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
	double cross = (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1);
	double S0 = fabs (cross) / 2.0;
	double ma;
	if (l < 0.5 && 0.5 < r) {
		double s_l = S (l, S0);
		double s_mid = S (0.5, S0);
		double s_r = S (r, S0);
		ma = min ({s_l, s_mid, s_r});
	} else {
		double s_l = S(l, S0);
		double s_r = S(r, S0);
		ma = min (s_l, s_r);
	}
	cout << fixed << setprecision (12) << ma << endl;
	return 0;
}
AC!
OIer的题解不易,多多谅解
备注
本文章(不包含代码)使用 Deepseek R1 进行了润色

评论

0 条评论,欢迎与作者交流。

正在加载评论...