zoukankan      html  css  js  c++  java
  • POJ1408 Fishnet 枚举+叉积

      题目链接:http://poj.org/problem?id=1408

      比较简单的题目,只是处理上麻烦了一点。

     1 //STATUS:C++_AC_32MS_208KB
     2 #include<stdio.h>
     3 #include<stdlib.h>
     4 #include<string.h>
     5 #include<math.h>
     6 #include<iostream>
     7 #include<string>
     8 #include<algorithm>
     9 #include<vector>
    10 #include<queue>
    11 #include<stack>
    12 using namespace std;
    13 #define LL __int64
    14 #define pii pair<int,int>
    15 #define Max(a,b) ((a)>(b)?(a):(b))
    16 #define Min(a,b) ((a)<(b)?(a):(b))
    17 #define mem(a,b) memset(a,b,sizeof(a))
    18 #define lson l,mid,rt<<1
    19 #define rson mid+1,r,rt<<1|1
    20 const int N=40,M=1000000,INF=0x3f3f3f3f,MOD=1999997;
    21 const LL LLNF=0x3f3f3f3f3f3f3f3fLL;
    22 const double DNF=100000000;
    23 
    24 struct Node{
    25     double x,y;
    26 }nod[N][N];
    27 int n;
    28 
    29 void linef(Node &l1,Node &l2,double &A,double &B,double &C){
    30     A=-(l1.y-l2.y);
    31     B=l1.x-l2.x;
    32     C=-A*l1.x-B*l1.y;
    33 }
    34 
    35 double getsum(Node &a,Node &b,Node &c, Node &d)
    36 {
    37     double s;
    38     s=a.x*b.y-a.y*b.x;
    39     s+=b.x*c.y-b.y*c.x;
    40     s+=c.x*d.y-c.y*d.x;
    41     s+=d.x*a.y-d.y*a.x;
    42     return fabs(s*0.5);
    43 }
    44 
    45 int main()
    46 {
    47  //   freopen("in.txt","r",stdin);
    48     int i,j;
    49     double a1,b1,c1,a2,b2,c2,ans;
    50     while(~scanf("%d",&n) && n)
    51     {
    52         ans=-DNF;
    53         nod[n+1][0].x=nod[n+1][0].y=0;
    54         nod[n+1][n+1].x=1,nod[n+1][n+1].y=0;
    55         for(i=1;i<=n;i++){
    56             scanf("%lf",&nod[n+1][i].x);
    57             nod[n+1][i].y=0;
    58         }
    59         nod[0][0].x=0,nod[0][0].y=1;
    60         nod[0][n+1].x=nod[0][n+1].y=1;
    61         for(i=1;i<=n;i++){
    62             scanf("%lf",&nod[0][i].x);
    63             nod[0][i].y=1;
    64         }
    65         for(i=n;i>=1;i--){
    66             scanf("%lf",&nod[i][0].y);
    67             nod[i][0].x=0;
    68         }
    69         for(i=n;i>=1;i--){
    70             scanf("%lf",&nod[i][n+1].y);
    71             nod[i][n+1].x=1;
    72         }
    73 
    74         for(i=1;i<=n;i++){
    75             linef(nod[i][0],nod[i][n+1],a1,b1,c1);
    76             for(j=1;j<=n;j++){
    77                 linef(nod[0][j],nod[n+1][j],a2,b2,c2);
    78                 nod[i][j].x=(c2*b1-c1*b2)/(a1*b2-a2*b1);
    79                 nod[i][j].y=(a1*c2-a2*c1)/(a2*b1-a1*b2);
    80             }
    81         }
    82         for(i=0;i<=n;i++)
    83             for(j=0;j<=n;j++)
    84                 ans=Max(ans,getsum(nod[i][j],nod[i][j+1],nod[i+1][j+1],nod[i+1][j]));
    85         printf("%.6lf\n",ans);
    86     }
    87     return 0;
    88 }
  • 相关阅读:
    docker底层原理
    搭建docker私有镜像仓库harbor
    docker 网络详解
    从对集合数据去重到Distinct源码分析
    学习笔记(3)centos7 下安装RabbitMQ
    学习笔记(2)centos7 下安装mysql
    学习笔记(1)centos7 下安装nginx
    2.Redis的数据类型
    1.Redis介绍以及安装
    mongoDB的安装和配置
  • 原文地址:https://www.cnblogs.com/zhsl/p/2868250.html
Copyright © 2011-2022 走看看