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

poj 2428 Surface Reconstruction

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

poj 2428 Surface Reconstruction

#include<iostream>#include<stdio.h>#include<algorithm>#include<cmath>#include<cstdlib>#include<cstring>using namespace std;double xx,yy,zz,dp[2][211][211],inf=(double)1000000000*(double)1000000000,ans;double area(double x1,double y1,double z1,double x2,double y2,double z2,double x3,double y3,double z3){       double value1=(x1-x2)*(x3-x2)+(y1-y2)*(y3-y2)+(z1-z2)*(z3-z2),value2=((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)+(z1-z2)*(z1-z2))*((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2));       value1*=value1;       if(value2-value1<0)          value2=value1;       return 0.5*sqrt(value2-value1);}struct poly{    double x,y,z;};poly a[2][111];int n,m;int main(){    int i,j,s,p,q,id;    double in,x1,y1,x2,y2;    scanf("%d",&n);    ans=inf;    in=1000000000;    for(i=0;i<n;i++)    {       scanf("%lf%lf",&a[1][i].x,&a[1][i].y);       if(a[1][i].y<in)       {          in=a[1][i].y;          id=i;       }       a[1][i].z=0;    }    x1=a[1][id].x-a[1][(id+n-1)%n].x;    y1=a[1][id].y-a[1][(id+n-1)%n].y;    x2=a[1][(id+1)%n].x-a[1][id].x;    y2=a[1][(id+1)%n].y-a[1][id].y;    if(y1*x2>y2*x1)    {       for(i=0;i<(n-1)/2;i++)          swap(a[1][i+1],a[1][n-1-i]);    }    scanf("%d",&m);    in=1000000000;    for(i=0;i<m;i++)    {       scanf("%lf%lf",&a[0][i].x,&a[0][i].y);       if(a[0][i].y<in)       {in=a[0][i].y;id=i;       }       a[0][i].z=10;    }    x1=a[0][id].x-a[0][(id+m-1)%m].x;    y1=a[0][id].y-a[0][(id+m-1)%m].y;    x2=a[0][(id+1)%m].x-a[0][id].x;    y2=a[0][(id+1)%m].y-a[0][id].y;    if(y1*x2>y2*x1)    {       for(i=0;i<(m-1)/2;i++)          swap(a[0][i+1],a[0][m-1-i]);    }    for(i=0;i<1;i++)      {        for(j=i;j<n+i+1;j++)          for(s=0;s<=m;s++)          {  if(j==i&&s==0)  {      dp[0][j][s]=area(a[1][j%n].x,a[1][j%n].y,a[1][j%n].z,a[0][s%m].x,a[0][s%m].y,a[0][s%m].z,a[0][(s+1)%m].x,a[0][(s+1)%m].y,a[0][(s+1)%m].z);     dp[1][j][s]=area(a[1][j%n].x,a[1][j%n].y,a[1][j%n].z,a[1][(j+1)%n].x,a[1][(j+1)%n].y,a[1][(j+1)%n].z,a[0][s%m].x,a[0][s%m].y,a[0][s%m].z);  }   else    dp[0][j][s]=dp[1][j][s]=inf;          }         for(j=i;j<n+i+1;j++) for(s=0;s<m+1;s++) {   if(j!=i||s!=0)    {      if(j>i)      {         dp[0][j][s]=min(dp[0][j][s],dp[1][j-1][s]);         dp[1][j][s]=min(dp[1][j][s],dp[1][j-1][s]);      }      if(s>0)      {         dp[0][j][s]=min(dp[0][j][s],dp[0][j][s-1]);         dp[1][j][s]=min(dp[1][j][s],dp[0][j][s-1]);      }      dp[0][j][s]+=area(a[1][j%n].x,a[1][j%n].y,a[1][j%n].z,a[0][s%m].x,a[0][s%m].y,a[0][s%m].z,a[0][(s+1)%m].x,a[0][(s+1)%m].y,a[0][(s+1)%m].z);      dp[1][j][s]+=area(a[1][j%n].x,a[1][j%n].y,a[1][j%n].z,a[1][(j+1)%n].x,a[1][(j+1)%n].y,a[1][(j+1)%n].z,a[0][s%m].x,a[0][s%m].y,a[0][s%m].z);   } }         if(ans>min(dp[0][n+i][m-1],dp[1][n+i-1][m])) ans=min(dp[0][n+i][m-1],dp[1][n+i-1][m]);      }     printf("%.0fn",ans);    return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374743.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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