hdu 1255 覆盖的面积 (Bruceforce)
暴力统计覆盖超过一次的区域。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)的更多相关文章
- hdu 1255 覆盖的面积(线段树 面积 交) (待整理)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 Description 给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. In ...
- hdu 1255 覆盖的面积(求覆盖至少两次以上的面积)
了校赛,还有什么途径可以申请加入ACM校队? 覆盖的面积 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K ...
- HDU - 1255 覆盖的面积(线段树求矩形面积交 扫描线+离散化)
链接:线段树求矩形面积并 扫描线+离散化 1.给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. 2.看完线段树求矩形面积并 的方法后,再看这题,求的是矩形面积交,类同. 求面积时,用被覆 ...
- hdu 1255 覆盖的面积 (线段树处理面积覆盖问题(模板))
http://acm.hdu.edu.cn/showproblem.php?pid=1255 覆盖的面积 Time Limit: 10000/5000 MS (Java/Others) Memo ...
- HDU 1255 覆盖的面积(线段树+扫描线)
题目地址:HDU 1255 这题跟面积并的方法非常像,仅仅只是须要再加一个变量. 刚開始我以为直接用那个变量即可,仅仅只是推断是否大于0改成推断是否大于1.可是后来发现了个问题,由于这个没有下放,没延 ...
- hdu 1255 覆盖的面积 (扫描线求矩形交)
覆盖的面积 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU 1255 覆盖的面积 ( 扫描线 + 离散 求矩阵大于k次面积并 )
覆盖的面积 Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Subm ...
- HDU 1255 覆盖的面积(线段树:扫描线求面积并)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 题目大意:给你若干个矩形,让你求这些矩形重叠两次及以上的部分的面积. 解题思路:模板题,跟HDU ...
- HDU 1255 覆盖的面积 (线段树+扫描线+离散化)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 题意很清楚,就是让你求矩阵之间叠加层数大于1的矩形块的面积和. 因为n只有1000,所以我离散化 ...
随机推荐
- iPhone使用CoreTelephony获得SIM卡网络运营商资讯和通话资料
注意要加头文件目录 /System/Library/Frameworks/CoreTelephony.framework/Headers 到 build 设置 Header Search Paths, ...
- Hdu 1269 强连通判定
题目链接 迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total S ...
- VMware安装Centos后无法上网
参考于: http://www.xpxt.net/xtjc/win8/04194953.html
- 【JZOJ5086】【GDOI2017第四轮模拟day1】数列 折半搜索
题面 有一个长度为n 的排列,现在有一些位置的数已经模糊不清了,你只知道这个排列的逆序对个数是K,你能计算出总共有多少可能的排列吗? 对于100% 的数据,n <=10^3,K<=10^9 ...
- Ajax系列之二:核心对象XMLHttpRquest
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhanghongjie0302/article/details/31432939 ...
- GenericServlet vs HttpServlet
1>>>>>>>> Difference between HttpServlet vs Generic Severlet javax.servlet. ...
- docker 常用的命令
1.运行容器 sudo docker run -d -t -p : --name demo ubuntu:16.04 2.删除容器 sudo docker rm -f demo 3.在容器中安装必备软 ...
- sed 命令用法
Sed:对文件进行编辑操作,对象是行.操作后在屏幕输出结果.如果要直接修改则加-i命令-f filename: 执行某文件内的sed命令-n 只显示被修改的那一行 如文件test内容:Letyou a ...
- Android Binder设计与实现 – 设计篇
摘要 Binder是Android系统进程间通信(IPC)方式之一.Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder ...
- shell脚本练习题(更新中...)
练习题(这里贴的是自己写的代码, 网上给的题目代码我会附加在最下面) 1. 编写shell脚本,计算1-100的和: #!/bin/bash #caculate the to `; do sum=$[ ...