关闭

不同的矩形

标签: 编程
262人阅读 评论(0) 收藏 举报

【题目描述】
农民约翰打算建一个新的矩形谷仓。但是,矩形谷仓的 4 个角落不能在落在软土路基上,只能落在一些固定点上。现在,他已经找到地面上有 N(4 <= N <= 1,000)个点,角落只可以落在这些点上。他想知道依次每加多一个点,可以建立新谷仓的方法数量,请你帮助他找到答案。
【输入格式】
第 1 行一个整数N
第 2 行至 N +1 行每行有两个被空格分隔的整数的 x,y,作为一个点的坐标。所有的 x,y 都不会超过 16,000。所有点都是不同的。
【输出格式】
共 N 行,每行表示当前可以建立的新的谷仓的数目。
【样例输入】
8
1 2
1 -2
2 1
2 -1
-1 2
-1 -2
-2 1
-2 -1
【样例输出】
0
0
0
0
0
1
3
6
【分析】
判断一个图形是不是矩形,一种直接的思路是枚举三个点,再判断第四个点,但是这种方法显然不可行。转换一种思路,保存每条对角线的长度和两个端点的坐标(如果两条对角线长度相等,中点重合,则其一定是一个矩形)即可。

const
  inf=1123357;
    step=13131;
var
  i,j:longint;
    n,x0,y0,len,p,c,ans:int64;
    x,y,xx,yy,ll,h,num:array[0..inf]of int64;
begin
    fillchar(h,sizeof(h),0);
    fillchar(xx,sizeof(xx),0);
    fillchar(yy,sizeof(yy),0);
    fillchar(ll,sizeof(ll),0);
    fillchar(num,sizeof(num),0);
    c:=0;
    ans:=0;
  readln(n);
    for i:=1 to n do begin
      readln(x[i],y[i]);
        for j:=1 to i-1 do begin
          x0:=x[i]+x[j];
            y0:=y[i]+y[j];
            len:=sqr(x[i]-x[j])+sqr(y[i]-y[j]);
          p:=(abs(x0*1343+y0*3217+len*1321)) mod inf;
            while (h[p]<>0)and((x0<>xx[h[p]])or(y0<>yy[h[p]])or(len<>ll[h[p]])) do p:=(p+step) mod inf;
            if h[p]=0 then begin
              inc(c);
              h[p]:=c;
              xx[c]:=x0;
              yy[c]:=y0;
              ll[c]:=len;
                num[h[p]]:=num[h[p]]+1;
          end
            else begin
              ans:=ans+num[h[p]];
                inc(num[h[p]]);
            end;
        end;
        writeln(ans);
    end;
end.
3
0
查看评论

矩形排样

<br />   看了网上好多文章讲矩形排样,自己也想了很多。总结了一下:<br /> <br />   1,矩形如何排列<br />     ...
  • xiamizy
  • xiamizy
  • 2011-04-02 14:20
  • 1111

求条形图中最大矩形的面积的两种算法

一.问题描述        给出一个条形图,假设每个条形的底边长为1,以相邻的若干个条形中最短的条形的高度为一条边的长度,再把它们的底边相加作为另一条边的长度可得到一个矩形,如图中红框所示,现在要求出最大矩形的面积。 二.两种算法 2.1暴力算法...
  • u012334071
  • u012334071
  • 2014-08-05 01:22
  • 1257

drawRect画矩形框bug:四边线条粗细不一致

下面是一个普通的矩形框的画法,画出来后,会发现,矩形框,四条线有粗有细。这是android的一个bug,我们没办法解决,只能规避。
  • qq_31852701
  • qq_31852701
  • 2016-11-08 16:36
  • 1254

任意角度的图像画法(椭圆、矩形、菱形)

玖、如何畫橢圓 馮丁樹  某一特定點離兩固定點間之距離和為一定時之軌跡為橢圓。事實上圓的圖形亦可作為橢圓之特殊形,因為只要橢圖之長軸與短軸相等時,即可以作圓。首先仍然需要宣告下面之指令:  axis equal;  繪圖參數本程式中之繪線,仍採用line的功能,逐點連線...
  • luckydongbin
  • luckydongbin
  • 2008-06-29 19:29
  • 5683

HTML5 canvas 绘制矩形 改变矩形颜色

HTML5 canvas 绘制矩形 改变矩形颜色
  • SunmmerSoftware
  • SunmmerSoftware
  • 2016-04-20 18:36
  • 375

Axure RP 不同形状的矩形

形状变形、两个形状结合。在原型制作中,我们可以将两个及以上的矩形组合起来,制作成个特殊形状的页面元素。发挥想像,原型界面也会有很多变化的元素。 步骤1: 从部件库拖拽一个矩形到线框图编辑区中,并点击矩形右上角的圆圈打开图形选择列表,选择向左三角形 RP 不同形状的矩形"...
  • PEXUE
  • PEXUE
  • 2015-01-19 14:00
  • 1902

poj 2559 Largest Rectangle in a Histogram 求面积最大的矩形(单调栈)

Largest Rectangle in a Histogram题目大意给出一个数N代表有多少个矩形,然后下面有N个数代表每个矩形的高度,宽度均为1。最后求这N个矩形组成的最大面积!解题思路很容易想到的就是使用单调栈。维护一个从栈顶到栈低减小的栈! 每次遇到栈顶的元素大于要压入的元素就要,出栈然后...
  • woshinannan741
  • woshinannan741
  • 2016-08-31 00:05
  • 1800

LintCode 直方图最大矩形覆盖

问题描述: 给出的n个非负整数表示每个直方图的高度,每个直方图的宽均为1,在直方图中找到最大的矩形面积。 以上直方图宽为1,高度为[2,1,5,6,2,3]。 最大矩形面积如图阴影部分所示,含有10单位。     分享本题的一种”暴力“解法。矩形的最大面积...
  • gzy13269561397
  • gzy13269561397
  • 2016-03-04 17:33
  • 1341

python+opencv图片旋转矩形分割

有时候需要对有角度的矩形框内图像从原图片中分割出来。这里的程序思想是,先将图片进行矩形角度的旋转,使有角度的矩形处于水平状态后,根据原来坐标分割图片。 参考:http://blog.csdn.net/yjl9122/article/details/71217872# -*- coding:gb23...
  • u013948010
  • u013948010
  • 2017-11-22 16:20
  • 521

关于矩形排样问题(一)

最近看到几个比较有意思的软件:极致下料、Cutlogic 2D、新易优化板材切割等软件,都围绕一个共同的话题,即板材切割,主要是针对二维的。对于上述软件,下载安装测试了一下,极致下料还算可以吧。让我好奇的是整个软件的实现算法,如果是暴力枚举的话不可能分分钟就返回一个还算可以接受的结果。目测用了一些智...
  • u011000290
  • u011000290
  • 2015-05-04 11:34
  • 1353
    个人资料
    • 访问:238540次
    • 积分:3750
    • 等级:
    • 排名:第10195名
    • 原创:176篇
    • 转载:22篇
    • 译文:0篇
    • 评论:18条
    个人主页
    www.jrxblog.top 欢迎访问&交换友链!
    博客专栏