题目链接:https://ac.nowcoder.com/acm/contest/881/F
题意:
给你一个三角形的三个点,A,B,C;
让你在三角形内找一点P 设期望E = max{}
输出期望E*36 (保证结果为整数)
题目求的是期望,所以用等边三角形这个特例来推公式
设边长为2a,取三角形的中心O,可以分成三个面积相等的三角形,要求最大的面积的期望,那么P点只能在红黄蓝三个区域内,由于等边三角形是对称的,所以只拿某一个区域看就可以了,比如下面这个黄色的区域
黄色的这部分又可以分成两个对称的部分,P点落在两个部分的概率是一样的,所以只看一边就好了
假设一个P点的位置,然后设P点到中线的距离是x,与O点的垂直距离是y,并且过P点做AC的垂线交AC于点G
过P点做AB的平行线交AC于点H,
通过相似可知
对面积求期望,则需要求积分,确定好积分区域,
积分后答案为
由于求得是期望,根据几何概型,P取点的数量就是我们这块积分区域的面积
所以期望为 由于最初的三角形的面积为
答案就是
#include <bits/stdc++.h>
using namespace std;
int main()
{
long long x1,x2,x3,y1,y2,y3;
while(scanf("%lld%lld%lld%lld%lld%lld",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF)
{
long long sum = abs((x1*y2+y1*x3+x2*y3)-(x1*y3+y2*x3+y1*x2))*11;
printf("%lld\n",sum);
}
return 0;
}