最大三角形

原题链接

题解

选的点一定是凸包上的点?

code

#include<bits/stdc++.h>
using namespace std;
struct poi
{
    double x,y;
}node[50005];
int q[100005];

double cal(int a,int b,int c)
{
    double x1=node[a].x-node[b].x,y1=node[a].y-node[b].y,x2=node[b].x-node[c].x,y2=node[b].y-node[c].y;
    return x1*y2-x2*y1;
}

bool cmp(poi a,poi b)
{
    if(a.x!=b.x) return a.x<b.x;
    return a.y>b.y;
}

int main()
{
    int n;
    while(cin>>n)
    {
        for(int i=1;i<=n;i++) cin>>node[i].x>>node[i].y;

        sort(node+1,node+1+n,cmp);//排序忘了,老是tle
        int top=0;
        for(int i=1;i<=n;i++)
        {
            while(top>1&&cal(i,q[top],q[top-1])<0) top--;
            q[++top]=i;
        }
        int top1=top;

        for(int i=n-1;i>=1;i--)
        {
            while(top>top1&&cal(i,q[top],q[top-1])<0) top--;
            q[++top]=i;
        }


        double ans=0;
        for(int i=1;i<top;i++)
            for(int j=i+1;j<top;j++)
                for(int k=j+1;k<top;k++)
                    ans=max(ans,abs(cal(q[i],q[j],q[k])));

        printf("%.2lf\n",ans*0.5);
    }
    return 0;
}
posted @   纯粹的  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示