数长方形

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 152    Accepted Submission(s): 87

Problem Description
小度熊喜欢玩木棒。一天他在玩木棒的时候,发现一些木棒会形成长方形。小度熊可能是处女座吧,他只会将木棒横竖摆放,这样会形成很多长方形。现在给你一些横竖摆放的木棒,请你帮小度熊数一数形成了多少个长方形。

为了简化题目,一个木棒的端点不会在另一个木棒上,也就是说,木棒的端点不会在长方形上。

 
Input
第一行一个整数T,表示T组数据,不超过100组。

每组数据中,第一行是n,代表有多少个木棒,n不会超过25。接下来n行,每行4个整数x1,y1,x2,y2,代表木棒的坐标,绝对值不超过1000。

所有的木棒都是横竖摆放的,也就是说x1=x2或者y1=y2,没有长为0的木棒。

 
Output
对于每组测试数据,先输出一行

Case #i:

然后输出一个整数,代表有多少个长方形。

 
Sample Input
2
4
3 0 3 3
4 0 4 3
2 1 5 1
2 2 5 2
4
3 0 3 3
4 0 4 3
2 1 5 1
2 2 -5 2
 
Sample Output
Case #1:
1
Case #2:
0
分析:分别把竖条和横条存在col和row数组中,然后两两枚举竖条col[i]和col[j],然后枚举判断row[k]是否横跨col[i]和col[j],若是的话s++,枚举一边row[k]后,此时的矩形个数sum+=s*(s-1)/2;
程序:
 
 #include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"algorithm"
#include"queue"
#include"math.h"
#include"iostream"
#include"vector"
#define M 100009
#define inf 0x3f3f3f3f
#define eps 1e-9
#define PI acos(-1.0)
#include"map"
#include"vector"
#include"set"
#include"string"
#include"stack"
#define LL __int64
using namespace std;
struct node
{
int x,y;
node(){}
node(int x,int y)
{
this->x=x;
this->y=y;
}
};
struct line
{
node s,e;
}col[M],row[M];
int cmp(line a,line b)
{
return a.s.x<b.s.x;
}
int ok(line a,line b,line c)
{
if(c.s.x<=a.s.x
&&c.e.x>=b.s.x
&&c.s.y<=min(a.s.y,b.s.y)
&&c.s.y>=max(a.e.y,b.e.y))
return ;
return ;
}
int main()
{
int T,kk=;
cin>>T;
while(T--)
{
int n;
scanf("%d",&n);
int x1,x2,y1,y2;
int col_k=;
int row_k=;
for(int i=;i<=n;i++)
{
scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
if(x1==x2)
{
++col_k;
col[col_k].s=node(x1,max(y1,y2));
col[col_k].e=node(x1,min(y1,y2));
}
else if(y1==y2)
{
++row_k;
row[row_k].s=node(min(x1,x2),y1);
row[row_k].e=node(max(x1,x2),y1);
}
}
sort(col+,col+col_k+,cmp);
int sum=;
for(int i=;i<=col_k;i++)
{
for(int j=i+;j<=col_k;j++)
{
int s=;
for(int k=;k<=row_k;k++)
{
if(ok(col[i],col[j],row[k]))
s++;
}
s--;
if(s>=)
{
s=s*(s+)/;
sum+=s;
}
}
}
printf("Case #%d:\n",kk++);
printf("%d\n",sum);
}
return ;
}
/*
23
6
1 0 1 5
5 0 5 5
0 4 6 4
0 2 6 2
0 1 6 1
3 0 3 3 2
0 0 0 5
6 0 6 6 7
0 1 100 1
0 3 100 3
0 95 100 95
0 97 100 97
3 0 3 10
3 90 3 100
90 0 90 110 10
0 1 100 1
0 2 100 2
0 3 100 3
0 4 100 4
0 5 100 5
10 0 10 110
11 0 11 110
12 0 12 110
13 0 13 110
15 0 15 110 */

暴力枚举-数长方形(hdu5258)的更多相关文章

  1. HDU 5258 数长方形【离散化+暴力】

    任意门:http://acm.hdu.edu.cn/showproblem.php?pid=5258 数长方形 Time Limit: 2000/1000 MS (Java/Others)    Me ...

  2. CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)

    问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...

  3. hihoCoder #1179 : 永恒游戏 (暴力枚举)

    题意: 给出一个有n个点的无向图,每个点上有石头数个,现在的游戏规则是,设置某个点A的度数为d,如果A点的石子数大于等于d,则可以从A点给每个邻接点发一个石子.如果游戏可以玩10万次以上,输出INF, ...

  4. [ACM] ZOJ 3816 Generalized Palindromic Number (DFS,暴力枚举)

    Generalized Palindromic Number Time Limit: 2 Seconds      Memory Limit: 65536 KB A number that will ...

  5. HDU - 1248 寒冰王座 数学or暴力枚举

    思路: 1.暴力枚举每种面值的张数,将可以花光的钱记录下来.每次判断n是否能够用光,能则输出0,不能则向更少金额寻找是否有能够花光的.时间复杂度O(n) 2.350 = 200 + 150,买350的 ...

  6. Gym 101194L / UVALive 7908 - World Cup - [三进制状压暴力枚举][2016 EC-Final Problem L]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...

  7. こだわり者いろはちゃん / Iroha's Obsession (暴力枚举)

    题目链接:http://abc042.contest.atcoder.jp/tasks/arc058_a Time limit : 2sec / Memory limit : 256MB Score ...

  8. CODE FESTIVAL 2017 qual A--B-fLIP(换种想法,暴力枚举)

    个人心得:开始拿着题目还是有点懵逼的,以前做过相同的,不过那是按一个位置行列全都反之,当时也是没有深究.现在在打比赛不得不 重新构思,后面一想把所有的状态都找出来,因为每次确定了已经按下的行和列后,按 ...

  9. HDU 5778 abs (暴力枚举)

    abs Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Problem De ...

随机推荐

  1. Networking with PHP

    PHP Advanced and Object-Oriented Programming 3rd Edition

  2. 【转】Unity 解析Json字符串

    http://blog.csdn.net/qq_15267341/article/details/52013190 LitJSON使用很简单,两个步骤: 1 将LitJSON.dll文件拖动到unit ...

  3. 捕获JS 错误日志

    最近在做项目的过程中,发现很多JS报错没有引起重视,我就想想把JS错误捕获了,然后展示在我们一个平台上 具体实现代码: window.onerror = function(message, url,  ...

  4. 蓝牙4.0(包含BLE)简介

    1. BLE   (低功耗蓝牙)简介 国际蓝牙联盟( BT-SIG,TI  是 企业成员之一)通过的一个标准蓝牙无线协议. 主要的新特性是在蓝牙标准版本上添加了4.0 蓝牙规范 (2010 年6 月 ...

  5. JS-008-日期控件操作

    此文以 js 操作 layDate 日期组件为示例演示,进行日期修改. 相应的演示示例脚本,敬请参阅之前的博文:HTML-001-日期组件 layDate 演示. 操作结果如下所示: 至此, JS-0 ...

  6. iOS开发中 在MRC中让某些类使用ARC编译 或者相反

    如果你的工程是MRC 想让某些类使用ARC进行编译的话 那么需要在Build Phases中Complile Sourse 把该类后面 写上如下命令:-fobjc-arc  反之 写上如下命令:-fn ...

  7. [开源]STM32F103RBT6最小系统,LEDx2,KEYx4

    STM32F103RBT6最小系统,调试通过,可以SWD模式下载程序,支持串口,一键下载. stm32f103rbt6最小系统链接:http://pan.baidu.com/s/1qYCHeHY 密码 ...

  8. 系统UITabBar属性设置

    设置背景: [_tabBar setBackgroundImage:[UIImage imageNamed:@"bg_tabbar"]]; 设置某个Item选中的效果: _tabB ...

  9. 常用公共的css的样式

    html{-webkit-text-size-adjust:none; /*解决chrome浏览器下字体不能小于12px*/} body{overflow-x: hidden; font-size:1 ...

  10. 磁盘空间已满导致rabbitmq无法启动

    rabbitmq-server 启动问题 今天遇到一个挺奇怪的 rabbitmq-server 的启动问题. 在内部使用的 openstack 环境上,rabbitmq-server突然就关掉了,无法 ...