• poj2079 求最大的三角形面积


    这个题说给出一堆点,求最大的三角形面积。
    我们知道这三个点肯定在凸包上,我们求出凸包之后不能枚举,因为题目n比较大,枚举的话要O(n^3)的数量级,所以采用旋转卡壳的做法:
    首先确定i,j,对k进行循环,知道找到第一个k使得cross(i,j,k)>cross(i,j,k+1),如果k==i进入下一次循环。
    对j,k进行旋转,每次循环之前更新最大值,然后固定一个j,同样找到一个k使得cross(i,j,k)>cross(i,j,k+1)。对j进行++操作,继续进行下一次,
    知道j==k为止。
    关键代码:

    void rotating_calipers()
    {
    	double ans=0.0,are;
    	int i,j,k,kk;
    	k=1;
    	++top;//top是凸包上顶点的个数
    	for(i=0;i<top;++i)
    	{
    		j=(i+1)%top;
    		k=(j+1)%top;
    		while(k!=i && cros(s[i],s[j],s[k])<cros(s[i],s[j],s[k+1]))
    			k=(k+1)%top;
    		if(k == i)
    			continue;
    		kk=(k+1)%top;
    		while(j!=kk && k!=i)
    		{
    			are=getArea(s[i],s[j],s[k]);
    			if(are>ans)
    				ans=are;
    			while(k!=i && cros(s[i],s[j],s[k])<cros(s[i],s[j],s[k+1]))
    				k=(k+1)%top;
    			j=(j+1)%top;
    		}
    	}
    	cout<<setiosflags(ios::fixed)<<setprecision(2)<<ans<<endl;
    }
    
  • 相关阅读:
    TortoiseSVN是windows平台下Subversion的免费开源客户端。
    Lotus Sametime 服务器的安装和配置
    群件
    Lotus Sametime
    软件项目经理
    PMP考试
    IT项目经理
    什么是模式呢?
    上下文(context):相关的内容
    设计模式-四要素
  • 原文地址:https://www.cnblogs.com/buptLizer/p/2241360.html
Copyright © 2020-2023  润新知