POJ 1693
题意:就是给你n条直线,求这n条直线最多可以构成多少个矩形。
思路:把直线分类,分成水平的和竖直的,然后两两组合,看是否能构成矩形。枚举
Memory: 692K Time: 0MS
Language: G++ Result: Accepted
Source Code
#include <string.h>
#include <stdio.h>
#include <iostream> using namespace std; int sx,sy,ex,ey; struct c{
int sx;
int sy;
int ex;
int ey;
}s[105],h[105]; #define judge(x,y) h[y].sx<=s[x].ex&&h[y].ex>=s[x].ex&&s[x].sy<=h[y].ey&&s[x].ey>=h[y].ey
// 目的是判断这两条直线是否有交点。 int main()
{
int n,m,nums,ans,numh,tmp;
scanf("%d",&n);
while(n--)
{
scanf("%d",&m);
nums=0,numh=0,ans=0;
for(int i=0;i<m;i++)
{
scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
if(sx==ex)
{
if(sy>ey){tmp=sy;sy=ey;ey=tmp;}
s[nums].sx=sx;
s[nums].sy=sy;
s[nums].ex=ex;
s[nums].ey=ey;
nums++;
}
if(sy==ey) //对直线进行分类,且这里要注意,直线的起点的坐标不一定要大于终点的坐标。
{
if(sx>ex){tmp=sx;sx=ex;ex=tmp;}
h[numh].sx=sx;
h[numh].sy=sy;
h[numh].ex=ex;
h[numh].ey=ey;
numh++;
}
}
for(int i=0;i<nums;i++) //每两条直线来比较
for(int j=0;j<numh;j++)
if(judge(i,j))
for(int k=i+1;k<nums;k++)
if(judge(k,j))
for(int l=j+1;l<numh;l++)
if(judge(i,l))
if(judge(k,l))
ans++;
printf("%d\n",ans);
}
return ;
}
POJ 1693的更多相关文章
- 数长方形有多少个?POJ(1693)
题目链接:http://poj.org/problem?id=1693 解题报告: 随机选两根横的,再找一下与这两根横线相交的竖线有多少根,m,那么就有(m-1)*m/2个长方形. #include ...
- POJ 题目分类(转载)
Log 2016-3-21 网上找的POJ分类,来源已经不清楚了.百度能百度到一大把.贴一份在博客上,鞭策自己刷题,不能偷懒!! 初期: 一.基本算法: (1)枚举. (poj1753,poj2965 ...
- (转)POJ题目分类
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- poj分类
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ( ...
- poj 题目分类(1)
poj 题目分类 按照ac的代码长度分类(主要参考最短代码和自己写的代码) 短代码:0.01K--0.50K:中短代码:0.51K--1.00K:中等代码量:1.01K--2.00K:长代码:2.01 ...
- POJ题目分类(按初级\中级\高级等分类,有助于大家根据个人情况学习)
本文来自:http://www.cppblog.com/snowshine09/archive/2011/08/02/152272.spx 多版本的POJ分类 流传最广的一种分类: 初期: 一.基本算 ...
- POJ题目分类(转)
初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推. ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- POJ题目(转)
http://www.cnblogs.com/kuangbin/archive/2011/07/29/2120667.html 初期:一.基本算法: (1)枚举. (poj1753,poj29 ...
随机推荐
- MongoVUE
MongoVUE运行界面如下:
- JDK自带方法实现AES对称加密
请看代码. 1 package jdbc.pro.lin; 2 3 import java.security.InvalidAlgorithmParameterException; 4 import ...
- jquery自定义函数的多种方法
在jquery中自定义函数你会吗?今天抽时间写了几个,个人感觉还不错,喜欢的朋友可以了解下 复制代码 代码如下: //方法定义 $.windowbox = { //定义一个方法aa aa: fun ...
- android自定义控件(8)-利用onMeasure测量使图片拉伸永不变形,解决屏幕适配问题
使用ImageView会遇到的问题 在Android应用中,都少不了图片的显示,ImageView,轮播图,ViewPager等等,很多都是来显示图片的,很多时候,我们都希望图片能够在宽度上填充父窗体 ...
- [css]通过transform缩放邮件客户端h5页面
摘要 最近一直在折腾邮件通知的东东,大概逻辑就是如果有新邮件,向收件人的app推送一条服务号消息,并且在单击该消息的时候,需要展示邮件的详情. 技术 这里是使用Exchange EWS API来实现的 ...
- 使程序在Linux下后台运行
一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...
- 最万能的解决mysql数据库的各种问题的办法
ubuntu下安装mysql及卸载mysql方法 1. 删除mysql a. sudo apt-get autoremove --purge mysql-server-5.0 b. sudo apt- ...
- Redis在WEB开发中的应用与实践
Redis在WEB开发中的应用与实践 一.Redis概述: Redis是一个功能强大.性能高效的开源数据结构服务器,Redis最典型的应用是NoSQL.但事实上Redis除了作为NoSQL数据库使用之 ...
- min-device-pixel-ratio
Devices with -webkit-min-device-pixel-ratio: 2.0 All Macs with Retina displaysApple iPhone 4Apple iP ...
- Linux运维初级教程(四)shell简介
查看系统可用的shell命令 cat /etc/shells shell是用于与内核进行交流的工具 管道和重定向(< < > > |) |为管道 标准输入的文件描述符为0,标准 ...