http://poj.org/problem?id=1151

题意:给出矩形的左上角坐标和右下角坐标(坐标的y轴是向下的),求出矩形面积的并。。

今天好困啊。。迷迷糊糊的听会神给讲了讲,敲完之后调试了好久。。原来存错数组了。。看来意识模糊的时候不适宜敲题。

 #include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int N=; struct node
{
double x1,y1,x2,y2;
} p[N];
double X[N],Y[N];
bool vis[N][N]; void init()
{
memset(vis,,sizeof(vis));
memset(X,,sizeof(X));
memset(Y,,sizeof(Y));
}
int BinSearch(double *f,int l,int r,double key)
{
while(l <= r)
{
int mid = (l+r)>>;
if (f[mid]==key)
return mid;
else if (key < f[mid])
r = mid-;
else
l = mid+;
}
}
int main()
{
int o = ,n;
while(~scanf("%d",&n)&&n)
{
o++;
init();
int m1=,m2=;
for (int i = ; i < n; i++)
{
scanf("%lf%lf%lf%lf",&p[i].x1,&p[i].y1,&p[i].x2,&p[i].y2);
X[m1++] = p[i].x1;
Y[m2++] = p[i].y1;
X[m1++] = p[i].x2;
Y[m2++] = p[i].y2;
}
sort(X,X+m1);
sort(Y,Y+m2);
for (int i = ; i < n; i++)
{
int px1 = BinSearch(X,,m1-,p[i].x1);
int py1 = BinSearch(Y,,m2-,p[i].y1);
int px2 = BinSearch(X,,m1-,p[i].x2);
int py2 = BinSearch(Y,,m2-,p[i].y2);
for (int i = px1; i < px2; i++)
{
for (int j = py1; j < py2; j++)
vis[i][j] = true;
} }
double area = ;
for (int i = ; i < m1; i++)
{
for (int j = ; j < m2; j++)
{
if (vis[i][j])
{
area += (X[i+]-X[i])*(Y[j+]-Y[j]);
}
}
}
printf("Test case #%d\n",o);
printf("Total explored area: %.2f\n",area);
puts("");
}
return ;
}

Atlantis(坐标离散化)的更多相关文章

  1. AOJ 0531 坐标离散化

    涂色:(日文题目,自己翻译成了中文)为了宣传信息竞赛,要在长方形的三合板上喷油漆来制作招牌.三合板上不需要涂色的部分预先贴好了护板.被护板隔开的区域要涂上不同的颜色,比如上图就应该涂上5种颜色. 请编 ...

  2. Aizu 0531 "Paint Color" (坐标离散化+DFS or BFS)

    传送门 题目描述: 为了宣传信息竞赛,要在长方形的三合板上喷油漆来制作招牌. 三合板上不需要涂色的部分预先贴好了护板. 被护板隔开的区域要涂上不同的颜色,比如上图就应该涂上5种颜色. 请编写一个程序计 ...

  3. poj 1151 Atlantis (离散化 + 扫描线 + 线段树 矩形面积并)

    题目链接题意:给定n个矩形,求面积并,分别给矩形左上角的坐标和右上角的坐标. 分析: 映射到y轴,并且记录下每个的y坐标,并对y坐标进行离散. 然后按照x从左向右扫描. #include <io ...

  4. POJ 1151 Atlantis(离散化)

    点我看题目 题意 : 就是给你n个矩形的最左下角和最右上角的点的坐标,然后将这n个矩形的面积求出来. 思路 : 离散化求矩形面积并.离散化具体介绍.将横纵坐标离散开来分别存,然后排序,也可以按照黑书上 ...

  5. HDU-1542 Atlantis(离散化+扫描线)

    题目大意:给n个矩形,可能重叠,求面积. 题目分析:线段树维护扫描线. 代码如下: # include<bits/stdc++.h> using namespace std; # defi ...

  6. nyoj_600:花儿朵朵(树状数组+坐标离散化)

    http://acm.nyist.net/JudgeOnline/problem.php?pid=600 只附代码好了 #include<bits/stdc++.h> using name ...

  7. 【坐标离散化】AOJ0531- Paint Color

    日文题……一开始被题目骗了以为真的要写文件? 题目大意&&解答戳:❀ #include<iostream> #include<cstdio> #include& ...

  8. hihoCoder#1079(线段树+坐标离散化)

    时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho在回国之后,重新过起了朝7晚5的学生生活,当然了,他们还是在一直学习着各种算法~ 这天小Hi和小Ho所在的学 ...

  9. nyoj 600:花儿朵朵(树状数组+坐标离散化)

    http://acm.nyist.net/JudgeOnline/problem.php?pid=600 只附代码好了 #include<bits/stdc++.h> using name ...

随机推荐

  1. acm相关(纯转载)

    我觉得很好的文章,之所以放随笔是为了让大家看到这些优秀的博文 acm如何起步 acm重点题型 动态规划题目总结 背包九讲阅读网站

  2. Luogu P3110 [USACO14DEC]驮运Piggy Back

    解题思路 看到下面很多人都在说什么遇到了之后要不要背着走,其实根本不需要,同样的我也是跑了三遍$SPFA$,求出了以$1$为起点到个点的$dist$,和以$2$为起点到个点的$dist$,还有以$n$ ...

  3. mysql5.7报Access denied for xxx@localhost 的解决

    使用root用户登录mysql数据库若如下报错 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor ...

  4. UVA - 1623 Enter The Dragon(贪心)

    题目: 思路: 读完题之后有了以下想法: 当遇到下雨的天,就找这个湖泊上一次下雨满了之后又一次不下雨的日期.有就在这个日期下记录被神龙喝干的湖的编号,没有就是不符合题意. 这个想法是对的,但是却被代码 ...

  5. ubuntu环境搭建DNS服务器

    1 安装bind9 apt install bind9 2 修改 named.conf.local,添加要解析的域名及对应的域名配置文件 zone "test.cn"{ type ...

  6. 常用Linux命令_20190211

    1.创建文件夹:mkdir 文件夹名称 2.查看IP地址信息:ipconfig -a 3.查看内存使用情况:free -m 4.查看CPU使用情况:top 5.查看磁盘使用情况:df -a/-h 6. ...

  7. 洛谷 2173 BZOJ 2816 [ZJOI2012]网络

    [题解] 明显的LCT模板题,c种颜色就开c棵LCT好了.. #include<cstdio> #include<algorithm> #define N 100010 #de ...

  8. 使用lombok提高编码效率-----不用写get set

    使用lombok提高编码效率-----不用写get    set https://blog.csdn.net/v2sking/article/details/73431364

  9. HDU 482 String

    String Time Limit: 1000ms Memory Limit: 32768KB This problem will be judged on HDU. Original ID: 482 ...

  10. MVC系统学习2—MVC路由

    在MVC下不是通过对物理文件的映射来实行访问的,而是通过定义后的路由Url来实现访问的.在前一篇讲到我们是在全局文件下进行路由配置. routes.MapRoute(                & ...