Counting Rectangles
Counting Rectangles
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 1043 Accepted: 546
Description
We are given a figure consisting of only horizontal and vertical line segments. Our goal is to count the number of all different rectangles formed by these segments. As an example, the number of rectangles in the Figures 1 and 2 are 5 and 0 respectively.
There are many intersection points in the figure. An intersection point is a point shared by at least two segments. The input line segments are such that each intersection point comes from the intersection of exactly one horizontal segment and one vertical segment.
Input
The first line of the input contains a single number M, which is the number of test cases in the file (1 <= M <= 10), and the rest of the file consists of the data of the test cases. Each test case begins with a line containing s (1 <= s <= 100), the number of line segments in the figure. It follows by s lines, each containing x and y coordinates of two end points of a segment respectively. The coordinates are integers in the range of 0 to 1000.
Output
The output for each test case is the number of all different rectangles in the figure described by the test case. The output for each test case must be written on a separate line.
Sample Input
2
6
0 0 0 20
0 10 25 10
20 10 20 20
0 0 10 0
10 0 10 20
0 20 20 20
3
5 0 5 20
15 5 15 25
0 10 25 10
Sample Output
5
0
给你水平还有竖直的线段判断可以组成多少的矩形
暴力姿势
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define LL long long
using namespace std;
const int MAX = 11000;
struct node
{
int x1;
int y1;
int x2;
int y2;
}H[120],S[120];
int top1,top2;
bool Judge(int h,int s)
{
if(S[s].y1>=H[h].y1&&S[s].y1<=H[h].y2&&H[h].x2>=S[s].x1&&H[h].x2<=S[s].x2)
{
return true;
}
return false;
}
int main()
{
int T;
int n;
int x1,y1,x2,y2;
scanf("%d",&T);
while(T--)
{
scanf("%d",&n);
top1=0;
top2=0;
for(int i=0;i<n;i++)
{
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
if(x1==x2)
{
H[top1].x1=x1;H[top1].y1=min(y1,y2);
H[top1].x2=x2;H[top1].y2=max(y1,y2);
top1++;
}
else if(y1==y2)
{
S[top2].x1=min(x1,x2);S[top2].y1=y1;
S[top2].x2=max(x1,x2);S[top2].y2=y2;
top2++;
}
}
int sum=0;
for(int i=0;i<top1;i++)
{
for(int j=0;j<top2;j++)
{
if(Judge(i,j))
{
for(int k=i+1;k<top1;k++)
{
if(Judge(k,j))
{
for(int s=j+1;s<top2;s++)
{
if(Judge(i,s)&&Judge(k,s))
{
sum++;
}
}
}
}
}
}
}
printf("%d\n",sum);
}
return 0;
}
Counting Rectangles的更多相关文章
- Project Euler 85 :Counting rectangles 数长方形
Counting rectangles By counting carefully it can be seen that a rectangular grid measuring 3 by 2 co ...
- UVA - 10574 Counting Rectangles
Description Problem H Counting Rectangles Input: Standard Input Output:Standard Output Time Limit: 3 ...
- UVA 10574 - Counting Rectangles(枚举+计数)
10574 - Counting Rectangles 题目链接 题意:给定一些点,求可以成几个边平行于坐标轴的矩形 思路:先把点按x排序,再按y排序.然后用O(n^2)的方法找出每条垂直x轴的边,保 ...
- Codeforces Round #219 (Div. 2) D. Counting Rectangles is Fun 四维前缀和
D. Counting Rectangles is Fun time limit per test 4 seconds memory limit per test 256 megabytes inpu ...
- Codeforces 372 B. Counting Rectangles is Fun
$ >Codeforces \space 372 B. Counting Rectangles is Fun<$ 题目大意 : 给出一个 \(n \times m\) 的 \(01\) ...
- [ACM_暴力][ACM_几何] ZOJ 1426 Counting Rectangles (水平竖直线段组成的矩形个数,暴力)
Description We are given a figure consisting of only horizontal and vertical line segments. Our goal ...
- UVA 10574 - Counting Rectangles 计数
Given n points on the XY plane, count how many regular rectangles are formed. A rectangle is regular ...
- Codeforces 372B Counting Rectangles is Fun:dp套dp
题目链接:http://codeforces.com/problemset/problem/372/B 题意: 给你一个n*m的01矩阵(1 <= n,m <= 40). 然后有t组询问( ...
- Codeforces 372B Counting Rectangles is Fun
http://codeforces.com/problemset/problem/372/B 题意:每次给出一个区间,求里面有多少个矩形 思路:预处理,sum[i][j][k][l]代表以k,l为右下 ...
随机推荐
- Lintcode: Binary Tree Serialization (Serialization and Deserialization Of Binary Tree)
Design an algorithm and write code to serialize and deserialize a binary tree. Writing the tree to a ...
- PHP——字符串处理部分
PHP——字符串处理 下面我们来讲一下我们经常使用的一些字符串处理的函数 1.string(变量);——取这个变量里面的字符串的长度 2.var_dump(变量a,变量b);——判断两个变量里面的字符 ...
- 转:JAVA强制类型转换
object对象转换为String的一些总结 ----------------------------------------------------------------------------- ...
- bzoj2333 [SCOI2011]棘手的操作
用set维护每个联通块里的最值,multiset维护所有块里的最值,并查集维护连通性,然后随便搞搞就行了,合并时候采用启发式合并.复杂度O(nlognlogn),大概勉强过的程度,反正跑的很慢就是了. ...
- windows系统调用 线程创建
#include "windows.h" #include "iostream" using namespace std; class CWorkerThrea ...
- Android测试AsyncTask下载图片
package com.example.myact8_async; import org.apache.http.HttpEntity; import org.apache.http.HttpResp ...
- 14---Net基础加强
更新中,敬请期待............ 复习-匿名类型 Xml介绍
- Sql Server服务远程过程调用失败解决
Sql Server服务远程过程调用失败解决 问题: 今天SQL数据库登录不上了,然后想启动Sql实例,却发现如下问题(配置环境:win7旗舰版x64,SqlServer2008R2, ...
- 夺命雷公狗mongodb之----mongodb---2---常用命令和技巧
查看有那些数据库: show dbs 切换到那个库: use 库名 use local use还有一个作用就是可以“创建一个数据库” use test 删除数据库: db.dropDatabase( ...
- PAT乙级 1018. 锤子剪刀布 (20)
1018. 锤子剪刀布 (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 大家应该都会玩“锤子剪刀布”的游 ...