做完了才发现,好像没有人和我的做法一样的,不过我怎么都觉得我的做法还是挺容易想的。

我的做法是:

把周围的方框按顺时针编号,然后对于每一条边,如果点出现在边的一侧,则把另一侧所有的点加1,这样最后统计最小值+1即可。

离散化一下 O(n)

//
// main.cpp
// poj1066
//
// Created by 陈加寿 on 15/12/30.
// Copyright (c) 2015年 chenhuan001. All rights reserved.
// #include <iostream>
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <algorithm>
using namespace std; struct line
{
int x1,y1;
int x2,y2;
}g[]; int save[]; int chg(int x,int y)
{
if( y== ) return x;
if( x== ) return +-y;
if( y== ) return + -x;
return +y;
} int main(int argc, const char * argv[]) {
int n;
while( scanf("%d",&n)!=EOF )
{
for(int i=;i<n;i++)
{
scanf("%d%d%d%d",&g[i].x1,&g[i].y1,&g[i].x2,&g[i].y2);
g[i].x1 *= ;
g[i].y1 *= ;
g[i].x2 *= ;
g[i].y2 *= ;
}
double x,y;
scanf("%lf%lf",&x,&y);
x*=;
y*=;
memset(save,,sizeof(save));
//以防万一,还是坐标乘2先
int num=;
for(int i=;i<n;i++)
{
if( chg( g[i].x1,g[i].y1 ) > chg(g[i].x2,g[i].y2) )
{
swap(g[i].x1,g[i].x2);
swap(g[i].y1,g[i].y2);
} int b,d;
b= chg( g[i].x1,g[i].y1 );
d= chg( g[i].x2,g[i].y2 ); double p1x,p1y,p2x,p2y;
p1x = g[i].x1-x;
p1y = g[i].y1-y;
p2x = g[i].x2-x;
p2y = g[i].y2-y; if( p1x*p2y - p1y*p2x > )
{
num++;
for(int j=b+;j<=d-;j++) save[j]--;
}
else
{
for(int j=b;j<=d;j++) save[j]++;
}
}
int mi=;
for(int i=;i<;i++) mi = min(mi ,save[i] );
printf("Number of doors = %d\n",mi+num+);
}
return ;
}

poj1066(叉乘的简单应用)的更多相关文章

  1. POJ 2318 TOYS (叉乘判断)

    <题目链接> 题目大意: 给出矩形4个点和n个挡板俩顶点的位置,这n个挡板将该矩形分成 n+1块区域,再给你m个点的坐标,然你输出每个区域内有几个点. 解题思路: 用叉乘即可简单判断点与直 ...

  2. 优先队列之二叉堆与d-堆

    二叉堆简介 平时所说的堆,若没加任何修饰,一般就是指二叉堆.同二叉树一样,堆也有两个性质,即结构性和堆序性.正如AVL树一样,对堆的以此操作可能破坏者两个性质中的一个,因此,堆的操作必须要到堆的所有性 ...

  3. 各种查找算法的选用分析(顺序查找、二分查找、二叉平衡树、B树、红黑树、B+树)

    目录 顺序查找 二分查找 二叉平衡树 B树 红黑树 B+树 参考文档 顺序查找 给你一组数,最自然的效率最低的查找算法是顺序查找--从头到尾挨个挨个遍历查找,它的时间复杂度为O(n). 二分查找 而另 ...

  4. Treap入门(转自NOCOW)

    Treap 来自NOCOW Treap,就是有另一个随机数满足堆的性质的二叉搜索树,其结构相当于以随机顺序插入的二叉搜索树.其基本操作的期望复杂度为O(log n). 其特点是实现简单,效率高于伸展树 ...

  5. luvit 初尝鲜

    官网:http://luvit.io/ Luvit is an attempt to do something crazy by taking node.js' awesome architectur ...

  6. Android事件传递机制详解及最新源码分析——ViewGroup篇

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 在上一篇<Android事件传递机制详解及最新源码分析--View篇>中,详细讲解了View事件的传递机制,没掌握或者掌握不扎实的小伙伴 ...

  7. 深入浅出数据结构C语言版(15)——优先队列(堆)

    在普通队列中,元素出队的顺序是由元素入队时间决定的,也就是谁先入队,谁先出队.但是有时候我们希望有这样的一个队列:谁先入队不重要,重要的是谁的"优先级高",优先级越高越先出队.这样 ...

  8. Tushare模块

    .TuShare简介和环境安装 TuShare是一个著名的免费.开源的python财经数据接口包.其官网主页为:TuShare -财经数据接口包.该接口包如今提供了大量的金融数据,涵盖了股票.基本面. ...

  9. 1.tushare模块的应用

    tushare模块的应用 今日概要 TuShare简介和环境安装 TuShare的应用 今日详情 一.TuShare简介和环境安装 TuShare是一个著名的免费.开源的python财经数据接口包.其 ...

随机推荐

  1. quartz---任务调度小试(多任务)

    quartz---任务调度小试         背景 笔者眼下做的项目"jrkj"首页上的信息都是从redis中读取的,每小时更新一次存入redis中,那么问题来了怎么才干让系统每 ...

  2. Solr In Action 中文版 第一章(三)

    3.1              为什么选用Solr? 在本节中.我们希望能够提供一些关键信息来帮助于你推断Solr是否是贵公司技术方案的正确选择.我们先从Solr吸引软件架构师的方面说起. 3.1  ...

  3. 如何使用apache的 work模式还是 prefork 模式

    注意: 2.4之前版本默认为prefork, 2.4已经变为event模式.三种模式比较: http://www.cnblogs.com/fnng/archive/2012/11/20/2779977 ...

  4. Ubuntu system zabbix-server-3.x install documentation

    Installing repository configuration package wget http://repo.zabbix.com/zabbix/3.0/ubuntu/pool/main/ ...

  5. Solr 6.6.0 ERROR: Port 8983 is already being used by another process.

    在目录D:\work\Solr\solr-6.6.0\bin下打开命令框: 输入:solr -e dih报错:ERROR: Port 8983 is already being used by ano ...

  6. Word文档打不开怎么办

    目前一些主流的办公软件给大家日常工作带来了很大便利,比如:Microsoft Office或金山WPS!我们在愉快地使用它们的同时,多少也遇到了一些让人尴尬或头疼的问题,比如:精心制作的文档,突然打不 ...

  7. sqlmap tamper绕过安全狗

    可以过5.3版本 放出py #!/usr/bin/env python """ Copyright (c) 2006-2014 sqlmap developers (ht ...

  8. LeetCode题目:Minimum Path Sum

    原题地址:https://leetcode.com/problems/minimum-path-sum/ 大意:给出一个二维数组(int类型),求出从左上角到右下角最短的路径. 解决方法:动态规划 c ...

  9. block知识点

    1.block引用局部变量的时候,该变量会作为常量编码到block中,在block中不能被修改. 2.使用 __block修饰的局部变量,不会作为常量被编码到block中,故而在block中可以被修改 ...

  10. 腾讯云DevOps 解决方案

    地址:https://www.qcloud.com/solution/devops 主要经历的几个阶段: 代码托管 持续集成与交互 测试管理 运维监控 项目管理 在上面图中都有,可以回过去查看.