1468 Rectangles

原创 2007年10月15日 08:20:00
Rectangles
Time Limit: 5000MS   Memory Limit: 10000K
Total Submissions: 1187   Accepted: 586

Description
A specialist in VLSI design testing must decide if there are some components that cover each other for a given design. A component is represented as a rectangle. Assume that each rectangle is rectilinearly oriented (sides parallel to the x and y axis), so that the representation of a rectangle consists of its minimum and maximum x and y coordinates.
Write a program that counts the rectangles that are entirely covered by another rectangle.

Input
The input contains the text description of several sets of rectangles. The specification of a set consists of the number of rectangles in the set and the list of rectangles given by the minimum and maximum x and y coordinates separated by white spaces, in the format:

nr_rectangles
xmin1 xmax1 ymin1 ymax1
xmin2 xmax2 ymin2 ymax2
...
xminn xmaxn yminn ymaxn

For each set,there will be less than 5000 rectangles.

Output
The output should be printed on the standard output. For each given input data set, print one integer number in a single line that gives the result (the number of rectangles that are covered).

Sample Input

 

Sample Output

 

Source
Southeastern Europe 2000

 *******************************************************************************

***********************************************************************************

Source Code
////现根据面积,选出面积最大的,并插入排序 并保存原始的数据下标!!!!再搜索一下符合条件的

#include <iostream>
using namespace std;

struct Rectangle
{
int minx;
int maxx;
int miny;
int maxy;
};

int main()
{
int Area[5000],Area1[5000],a[5000];
Rectangle Rec[5000];
int i ,j ,temp ;
int num, Index ,sum;
while(scanf("%d",&num )!=EOF )
{
   for(i=0; i<num; i++)
   {
    scanf("%d %d %d %d", &Rec[i].minx, &Rec[i].maxx, &Rec[i].miny, &Rec[i].maxy );
    Area[i] = ( Rec[i].maxx - Rec[i].minx ) *( Rec[i].maxy-Rec[i].miny);
    Area1[i] =Area[i];
   }

        for(i=0;i<num-1;i++)
     {
           int   min=i;
           for(j = i+1; j < num; j ++)
             if( Area1[j] < Area1[min])
                min = j;
           temp = Area1[min];
           Area1[min] = Area1[i];
           Area1[i] = temp;
     }
     for(i = 0; i < num; i ++)
           for(j=0 ; j < num; j ++)
             if(Area1[i] == Area[j])
             {
                Area[j]=0;
                a[i]=j;
                break;
    }
        for(sum=0,j=0;j<num-1;j++)
          for(i=j+1;i<num;i++)
            if(Rec[a[j]].maxx<=Rec[a[i]].maxx&&Rec[a[j]].minx>=Rec[a[i]].minx
      &&Rec[a[j]].maxy<=Rec[a[i]].maxy&&Rec[a[j]].miny>=Rec[a[i]].miny )
            {     
               sum++;
               break;
     }     
        for(i=0;i<num-1;i++)
           if(Rec[i].maxx==Rec[num-1].maxx && Rec[i].minx==Rec[num-1].minx
     &&Rec[i].maxy==Rec[num-1].maxy&&Rec[i].miny==Rec[num-1].miny)
           {
              sum+=1;
              break;
           }

   printf("%d/n",sum);
}
return 0;
}

 

0
4

 

3
100 101 100 101
0 3 0 101
20 40 10 400
4
10 20 10 20
10 20 10 20
10 20 10 20
10 20 10 20

点分治专题——bzoj 1468 &bzoj 2152 题解

【前言】最近一直在忙着学算法,但是效果似乎不是很好。前段时间的树剖也快忘了= =。树套树没熟练,就开始写主席树了= =。更别说本身就不是很懂的莫比乌斯反演了。~~决定好好复习一下。 【点分治的作用】套...
  • u013724185
  • u013724185
  • 2014年05月13日 20:50
  • 3217

【bzoj1468】【Tree】【点分治】

Description 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K Input N(n Output 一行,有多少对点之间的距离小于等于k ...
  • sunshinezff
  • sunshinezff
  • 2015年10月04日 08:56
  • 608

位图(图像处理入门)

1,Windows的位图实际上是一些和显示象素相对应的位阵列。 2,GDI位图是设备相关位图,用MS基本类库(MFC)中的CBitmap类表示的,依赖具体的设备。 3,DIB设备无关位图,...
  • foreverhuylee
  • foreverhuylee
  • 2014年04月01日 21:39
  • 824

该暴力的时候还是要暴力滴!

#include #include #include #include #include #include #include using namespace std; #define...
  • u012344338
  • u012344338
  • 2014年11月02日 22:12
  • 254

九度笔记之 1468:Sharing

题目1468:Sharing 求两个单词的共同后缀具体参见 http://ac.jobdu.com/problem.php?pid=1468 算法分析      把两个单词右对齐,然后从短...
  • KingEasternSun
  • KingEasternSun
  • 2013年08月15日 15:26
  • 783

Rectangles 最长自增子序列

问题 H: Rectangles 时间限制: 1 Sec  内存限制: 64 MB 提交: 13  解决: 3 [提交][状态][讨论版] 题目描述 Given N (4 ...
  • wanghandou
  • wanghandou
  • 2017年04月26日 17:05
  • 134

C语言模拟考|rectangles

Description Give you N rectangles.If you can pick exactly three pieces of those rectangles to form ...
  • duolabaobao
  • duolabaobao
  • 2016年11月04日 16:38
  • 358

九度:1468<Sharing><链表>

// 浙大12机试 // 九度:1468 // // Sharing:单词链表存储,共享后缀存储空间 // #include #include #include #define SI...
  • Staibin
  • Staibin
  • 2014年03月06日 09:02
  • 553

hdoj 2056 Rectangles(矩形) 【几何】

Rectangles Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot...
  • bmicnj
  • bmicnj
  • 2016年05月17日 16:47
  • 266

【BZOJ】1468 Tree 点分治

题目传送门 这题就是一道点分治的模板题,就当是立学习了点分治的Flag了。 点分治,就是把分治的思想转移到树上,然后对于任意两个节点的路径过当前子树的情况进行特殊讨论。 这道题是求任意两点间的距...
  • lyfsb
  • lyfsb
  • 2017年05月25日 20:53
  • 243
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:1468 Rectangles
举报原因:
原因补充:

(最多只允许输入30个字)