Problem - 1255

  暴力统计覆盖超过一次的区域。1y。

代码如下:

 #include <cstdio>
#include <cstring>
#include <cmath>
#include <iostream>
#include <algorithm>
#include <set> using namespace std; typedef pair<double, int> PDBI;
multiset<PDBI> pos;
#define MPR make_pair
#define FI first
#define SE second
const int N = ;
double rec[N][]; struct Mark {
double x1, x2, y;
bool end;
Mark() {}
Mark(double x1, double x2, double y, bool end) :
x1(x1), x2(x2), y(y), end(end) {}
bool operator < (Mark x) const { return y < x.y;}
} mk[N << ]; int main() {
int n, T;
cin >> T;
while (T-- && cin >> n) {
for (int i = ; i < n; i++) {
for (int j = ; j < ; j++) {
cin >> rec[i][j];
}
if (rec[i][] > rec[i][]) swap(rec[i][], rec[i][]);
if (rec[i][] > rec[i][]) swap(rec[i][], rec[i][]);
mk[i << ] = Mark(rec[i][], rec[i][], rec[i][], false);
mk[i << | ] = Mark(rec[i][], rec[i][], rec[i][], true);
}
sort(mk, mk + (n << ));
pos.clear();
if (mk[].end) {
puts("WTF?!!");
while () {}
}
pos.insert(MPR(mk[].x1, ));
pos.insert(MPR(mk[].x2, -));
multiset<PDBI>::iterator msi;
double area = 0.0;
for (int i = , end = n << ; i < end; i++) {
msi = pos.begin();
int cnt = ;
double last, sum = 0.0;
while (msi != pos.end()) {
double fi = (*msi).FI;
int se = (*msi).SE;
if (se > ) {
cnt++;
if (cnt == ) last = fi;
} else {
cnt--;
if (cnt == ) sum += fi - last;
}
msi++;
}
area += sum * (mk[i].y - mk[i - ].y);
if (mk[i].end) {
pos.erase(pos.find(MPR(mk[i].x1, )));
pos.erase(pos.find(MPR(mk[i].x2, -)));
} else {
pos.insert(MPR(mk[i].x1, ));
pos.insert(MPR(mk[i].x2, -));
}
}
if (pos.size()) {
puts("shit!");
while () {}
}
printf("%.2f\n", area);
}
return ;
}

——written by Lyon

hdu 1255 覆盖的面积 (Bruceforce)的更多相关文章

  1. hdu 1255 覆盖的面积(线段树 面积 交) (待整理)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 Description 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积.   In ...

  2. hdu 1255 覆盖的面积(求覆盖至少两次以上的面积)

    了校赛,还有什么途径可以申请加入ACM校队?  覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K ...

  3. HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)

    链接:线段树求矩形面积并 扫描线+离散化 1.给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 2.看完线段树求矩形面积并 的方法后,再看这题,求的是矩形面积交,类同. 求面积时,用被覆 ...

  4. hdu 1255 覆盖的面积 (线段树处理面积覆盖问题(模板))

    http://acm.hdu.edu.cn/showproblem.php?pid=1255 覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memo ...

  5. HDU 1255 覆盖的面积(线段树+扫描线)

    题目地址:HDU 1255 这题跟面积并的方法非常像,仅仅只是须要再加一个变量. 刚開始我以为直接用那个变量即可,仅仅只是推断是否大于0改成推断是否大于1.可是后来发现了个问题,由于这个没有下放,没延 ...

  6. hdu 1255 覆盖的面积 (扫描线求矩形交)

    覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  7. HDU 1255 覆盖的面积 ( 扫描线 + 离散 求矩阵大于k次面积并 )

    覆盖的面积 Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  8. HDU 1255 覆盖的面积(线段树:扫描线求面积并)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 题目大意:给你若干个矩形,让你求这些矩形重叠两次及以上的部分的面积. 解题思路:模板题,跟HDU ...

  9. HDU 1255 覆盖的面积 (线段树+扫描线+离散化)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 题意很清楚,就是让你求矩阵之间叠加层数大于1的矩形块的面积和. 因为n只有1000,所以我离散化 ...

随机推荐

  1. vue-li+webpack+iview构建项目步骤

    首先安装各类插件 npm install vue-cli -g vue init webpack demo npm install iview --save npm install less styl ...

  2. django中模板

    一.创建模板目录和模板html文件 # /templates/应用名称/html文件集合 #模板目录:创建项目根目录下面,和manage.py工具在同一层#在模板目录下面分别创建各个应用的模板目录#最 ...

  3. 如何制作可以在 MaxCompute 上使用的 crcmod

    之前我们介绍过在 PyODPS DataFrame 中使用三方包.对于二进制包而言,MaxCompute 要求使用包名包含 cp27-cp27m 的 Wheel 包.但对于部分长时间未更新的包,例如 ...

  4. bzoj 3598 [Scoi2014]方伯伯的商场之旅——数位dp

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3598 TJ:https://www.cnblogs.com/Zinn/p/9351218.h ...

  5. 微信小程序--Tab栏切换的快速实现

    上效果! wxss样式代码: .tabs-item.selected { color:rgba(,,,.); border-bottom:2px solid rgba(,,,.); } .tabs-i ...

  6. oracle 索引监控

           索引对于在大量数据里检索出少量数据库的查询操作来说是高效的,可是对于DML操作来说.却是负面的:①其对于insert 操作的反面影响最大.该表的索引越多,更新的索引越多,insert 操 ...

  7. js的动态tab导航

    html部分 <div class="container"> <h3 class="page-header">tab切换</h3& ...

  8. 【心有猛虎】react-lesson

    这个项目标识:构建一套适合 React.ES6 开发的脚手架 项目地址为:https://github.com/ZengTianShengZ/react-lesson 运行的是第一课,基本上可以当作是 ...

  9. Android AbsListView子类反复调用getView()和getCount()问题分析

    对于AbsListView子类,假设它的宽高是自适应的,你会发现getView()和getCount()会被疯狂的反复调用.即使在AbsListView子类设置完adapter后,getView()和 ...

  10. pl/sql基础知识—包

    n  包 包用于在逻辑上组合过程和函数,它由包规范和包体两部分组成. 为什么需要包:使用包可以更好的管理自己写的函数.过程 ①我们可以使用create package命令来创建包:     creat ...