zoukankan      html  css  js  c++  java
  • 遗址 (Standard IO)

    题意/Description:

           很久很久以前有一座寺庙,从上往下看寺庙的形状正好是一个正方形,在4个角上竖立着圆柱搭建而成。现在圆柱都倒塌了,只在地上留下圆形的痕迹,可是现在地上有很多这样的痕迹,专家说一定是最大的那个。
           写一个程序,给出圆柱的坐标,找出由4个圆柱构成的最大的正方形,因为这就是寺庙的位置,要求计算出最大的面积。注意正方形的边不一定平行于坐标轴。
           例如下图有10根柱子,其中(4,2),(5,2),(5,3),(4,3)可以形成一个正方形,(1,1),(4,0),(5,3),(2,4)也可以,后者是其中最大的,面积为10。


     

    读入/Input

           第一行包含一个N(1<=N<=3000),表示柱子的数量。
           接下来N行,每行有两个空格隔开的整数表示柱子的坐标(坐标值在0.到5000之间),柱子的位置互不相同。

     

    输出/Output

           如果存在正方形,输出最大的面积,否则输出0。

     

    题解/solution

           枚举任意两个点,画画的出第三和第四个点:

                  第三:             y1:=y[i]+x[j]-x[i];    x1:=x[i]-y[j]+y[i];
                  第四:             x2:=x1+x[j]-x[i];      y2:=y1+y[j]-y[i];

            然后判断这两个点是否存在。

          (注:这式子是对于某一条边的。)

     

    代码/Code

    var
      n,max:longint;
      x,y:array[1..3000] of longint;
      a:array[0..5000,0..5000]of boolean;
    procedure init;
    var
      i:longint;
    begin
      readln(n);
      for i:=1 to n do
        begin
          readln(x[i],y[i]);
          a[x[i],y[i]]:=true;
        end;
      max:=0;
    end;
    
    procedure main;
    var
      i,j,x1,x2,y1,y2,s:longint;
    begin
      for i:=1 to n-1 do
        begin
          for j:=i+1 to n do
            begin
              s:=sqr(x[j]-x[i])+sqr(y[j]-y[i]);
              if s>max then
                begin
                  y1:=y[i]+x[j]-x[i];
                  x1:=x[i]-y[j]+y[i];
                  x2:=x1+x[j]-x[i];
                  y2:=y1+y[j]-y[i];
                  if (x1>=0) and (x2>=0) and (y1>=0) and (y2>=0) and
                    (x1<=5000) and (x2<=5000) and (y1<=5000) and (y2<=5000) and
                      a[x1,y1] and a[x2,y2] then max:=s;
                end;
            end;
        end;
    end;
    
    begin
      init;
      main;
      writeln(max);
    end.



  • 相关阅读:
    单例模式(Singleton)
    cdlinux
    android 去锯齿
    ide
    图片加载内存溢出
    android AlertDialog 弹出窗
    找回 文件下载 ie 窗口
    javac 多个jar文件 用封号 隔开
    android 模拟按钮点击
    android 加载多个图片 内在溢出的问题
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9319631.html
Copyright © 2011-2022 走看看