牛客多校(一)F.Random Point in Triangle

本文探讨了在三角形ABC中随机选取一点P,并通过P点与各顶点构成的三角形来求解面积期望的问题。提出了三种解决思路,包括强行二重积分法、利用三角形重心性质的方法以及几何作图法。最终给出了一种简洁的计算公式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目链接:F.Random Point in Triangle

题目大意:在三角形ABC中随机的选取一点P,连接P与各个顶点构成三角形ABP,ACP,BCP。需求出一个期望E=max(S_{ABP},S_{ACP},S_{BCP}),其中S_{XYZ}为三角形XYZ 面积。程序输出36\times E,结果一定为整数。

思路(一):强行二重积分(目前还不太会)

思路(二):构造三角形ABC,其中G为三角形ABC重心。

由重心的性质

  1. \frac{AG}{GF}=\frac{2}{1}=......(其他线段也一样)
  2. S_{ABG}=S_{ACG}=S_{BCG}=\frac{1}{3}S_{ABC}

所以P点的选择只能使三角形面积的期望\frac{1}{3}S_{ABC}<E(S)<S_{ABC},经尝试得到系数为22

36E(S)=22\times \frac{1}{2}\overrightarrow{a}\times \overrightarrow{b}

思路(三):来自大神的几何作图

代码:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <queue>
typedef long long ll;
using namespace std;
#define INF 0x3f3f3f3f
const int mod=1e9+7;
const int maxn=1e5+10;
ll gcd(ll a,ll b){return b?gcd(b,a%b):a;}
ll lcm(ll a,ll b){return a/gcd(a,b)*b;}
int main()
{
	ll x1,x2,x3,y1,y2,y3;
	while(~scanf("%lld%lld%lld%lld%lld%lld",&x1,&y1,&x2,&y2,&x3,&y3)){
		 ll ans=abs((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))*11;
		 printf("%lld\n",ans );
	}
	return 0;
}

!!!!!!积分做法一定要搞懂!!!!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值