栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1806 This Takes the Cake

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1806 This Takes the Cake

#include<stdio.h>#include<iostream>#include<cmath>#include<string.h>#include<math.h>#define eps 1e-8#include<algorithm>using namespace std;struct Point{    double x,y;};int n;Point p[100];double Xmult(Point a,Point b){    return a.x*b.y-a.y*b.x;}int Sig(double a){    return a<-eps?-1:a>eps;}Point Get_mid(Point a,Point b){    Point ret;    ret.x=(a.x+b.x)*0.5;    ret.y=(a.y+b.y)*0.5;    return ret;}double Count(int a,int b){    double ans=0;    for(int i=a;i!=b;i=(i+1)%8)        ans+=Xmult(p[i],p[(i+1)%8]);    ans+=Xmult(p[b],p[a]);    return ans*0.5;}int main(){    double c1,c2;    double a1,a2;    double all;    int cas=1;    while(scanf("%lf%lf%lf%lf%lf%lf%lf%lf",    &p[0].x,&p[0].y,&p[2].x,&p[2].y,    &p[4].x,&p[4].y,&p[6].x,&p[6].y))    {        if( !p[0].x && !p[0].y && !p[2].x && !p[2].y, !p[4].x && !p[4].y && !p[6].x && !p[6].y)        break;        for(int i=1;i<=7;i+=2) p[i]=Get_mid(p[i-1],p[(i+1)%8]);        all=c1=Count(0,7);        c2=0;        for(int i=0;i<8;i++)        { int j; if(i%2==0) {     j=(i+3)%8;     while((j+2)%8!=i)     {         a1=Count(i,j);         a2=all-a1;         if(fabs(a1-a2)<fabs(c1-c2))         {  c1=a1;  c2=a2;         }         j=(j+1)%8;     } } else {     j=(i+2)%8;     while((j+1)%8!=i)     {         a1=Count(i,j);         a2=all-a1;         if(fabs(a1-a2)<fabs(c1-c2))         {  c1=a1;  c2=a2;         }         j=(j+1)%8;     } }        }        if(c1>c2) swap(c1,c2);        printf("Cake %d: %.3f %.3fn",cas++,c1,c2);    }    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/371832.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号