poj 1151 (未完成) 扫描线 线段树 离散化
#include<iostream>
#include<vector>
#include<cmath>
#include<algorithm>
using namespace std;
#define y1 y11
#define ls rt<<1,l,m
#define rs rt<<1|1,m+1,r
const int maxn=1e3+;
double x1[maxn];
double y1[maxn];
double x2[maxn];
double y2[maxn];
vector<double> vx;
vector<double> vy;
double x[maxn];
double y[maxn];
struct node { int yl,yr,k; }pp[maxn];
vector<node> vxxx[maxn];
double tree[*maxn];
double ans[*maxn];
int lazy[*maxn]; int tot=;
void push_up(int rt) { tree[rt]=tree[rt<<]+tree[rt<<|]; }
//void push_down(int rt,int len) { lazy[rt<<1]+=lazy[rt]; lazy[rt<<1|1]+=lazy[rt]; lazy[rt]=0; }
void build(int rt,int l,int r)
{
if(l==r) { tot++; tree[l]=vy[tot]-vy[tot-]; return ; }
int m=(l+r)>>; build(ls); build(rs);push_up(rt);
}
void update(int p,int delta,int rt,int l,int r)
{
if(l==r) { tree[rt]+=delta; return ; }
int m=(l+r)>>;
if(p<=m)update(p,delta,ls);
else update(p,delta,rs);
push_up(rt);
}
void Update(int L,int R,int delta,int rt,int l,int r)
{
if(L<=l&&r<=R) { lazy[rt]+=delta; return ; }
if(lazy[rt]) push_down(rt,r-l+);
int m=(l+r)>>;
if(L<=m)Update(L,R,delta,ls);
if(R>m)Update(L,R,delta,rs);
push_up(rt);
}
int main()
{
int cnt=;
int n;
while()
{
scanf("%d",&n); if(n==) break;
for(int i=;i<=n;i++) scanf("%lf %lf %lf %lf",&x1[i],&y1[i],&x2[i],&y2[i]);
for(int i=;i<=n;i++)
{
vx.push_back(x1[i]);
vx.push_back(x2[i]);
vy.push_back(y1[i]);
vy.push_back(y2[i]);
}
sort(vx.begin(),vx.end()); vx.erase(unique(vx.begin(),vx.end()),vx.end());
for(int i=;i<vx.size();i++) x[i]=vx[i];
sort(vy.begin(),vy.end()); vy.erase(unique(vy.begin(),vy.end()),vy.end());
for(int i=;i<vy.size();i++) y[i]=vy[i];
for(int i=;i<=n;i++)
{
int k=lower_bound(vx.begin(),vx.end(),x1[i])-vx.begin();
node p; p.yl=y1[i]; p.yr=y2[i]; p.k=;
vxxx[k].push_back(p);
k=lower_bound(vx.begin(),vx.end(),x2[i])-vx.begin();
p.k=-;
vxxx[k].push_back(p);
}
int m=vy.size()-;
build(,,m);
double ans=;
for(int i=;i<vx.size();i++)
{
if(i==)
{
for(int j=;j<=vxx[i].size();j++)
{
node p=vxxx[i][j];
int l=lower_bound(vy.begin(),vy.end(),p.yl)-vy.begin();
int r=lower_bound(vy.begin(),vy.end(),p.yr)-vy.begin();
update(l,r,p.k,,,m);
}
}
}
}
}
poj 1151 (未完成) 扫描线 线段树 离散化的更多相关文章
- POJ 1151 Atlantis (扫描线+线段树)
题目链接:http://poj.org/problem?id=1151 题意是平面上给你n个矩形,让你求矩形的面积并. 首先学一下什么是扫描线:http://www.cnblogs.com/scau2 ...
- POJ 1151:Atlantis 线段树+扫描线
Atlantis Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 19374 Accepted: 7358 Descrip ...
- 矩形面积并-扫描线 线段树 离散化 模板-poj1151 hdu1542
今天刚看到这个模板我是懵逼的,这个线段树既没有建树,也没有查询,只有一个update,而且区间成段更新也没有lazy标记....研究了一下午,我突然我发现我以前根本不懂扫描线,之所以没有lazy标记, ...
- POJ 1151 Atlantis(线段树-扫描线,矩形面积并)
题目链接:http://poj.org/problem?id=1151 题目大意:坐标轴上给你n个矩形, 问这n个矩形覆盖的面积 题目思路:矩形面积并. 代码如下: #include<stdio ...
- HDU 1255 覆盖的面积 (扫描线 线段树 离散化 矩形面积并)
题目链接 题意:中文题意. 分析:纯手敲,与上一道题目很相似,但是刚开始我以为只是把cnt>=0改成cnt>=2就行了,. 但是后来发现当当前加入的线段的范围之前 还有线段的时候就不行了, ...
- BZOJ 1645: [Usaco2007 Open]City Horizon 城市地平线 扫描线 + 线段树 + 离散化
Code: #include<cstdio> #include<algorithm> #include<string> #define maxn 1030000 # ...
- 【POJ 2482】 Stars in Your Window(线段树+离散化+扫描线)
[POJ 2482] Stars in Your Window(线段树+离散化+扫描线) Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...
- HDU 3265/POJ 3832 Posters(扫描线+线段树)(2009 Asia Ningbo Regional)
Description Ted has a new house with a huge window. In this big summer, Ted decides to decorate the ...
- POJ 2528 Mayor's posters(线段树+离散化)
Mayor's posters 转载自:http://blog.csdn.net/winddreams/article/details/38443761 [题目链接]Mayor's posters [ ...
随机推荐
- Linux wc -l 统计文件行数存在的问题
1.使用这种方式效率较低,而且不注意可能出现错误 find . -name "*.pc" |xargs wc -l 直接查看 total 不是正确的值. 原因: 这种方式存在一个 ...
- [数据结构]P2.1 二叉搜索树
二叉树就是每个节点最多有两个分叉的树.这里我们写一写一个典型的例子二叉搜索树,它存在的实际意义是什么呢? 在P1.1链表中,我们清楚了链表的优势是善于删除添加节点,但是其取值很慢:数组的优势是善于取值 ...
- guxh的python笔记七:抽象基类
1,鸭子类型和白鹅类型 1.1,白鹅类型 白鹅类型对接口有明确定义,比如不可变序列(Sequence),需要实现__contains__,__iter__,__len__,__getitem__,__ ...
- NFine中权限判断出错的问题
NFine中权限判断出错的问题 问题描述:登录后点击栏目一,弹出了窗口一,再点击栏目二,弹出了窗口二,然后再点击窗口一,再执行窗口一中的操作时,发现已没有任何权限,调试后发现在HandlerAutho ...
- Kali linux 2016.2(Rolling)里安装OpenVAS
不多说,直接上干货! 本博文,是在Kali 2.0 linux里,安装OpenVAS. 前言 OpenVAS是一款开放式的漏洞评估工具,主要用来检测目标网络或主机的安全性.与安全焦点的X-Scan工具 ...
- 通用Mapper环境下,mapper接口无法注入问题
写了一个mapper接口 package com.nyist.mapper; import com.nyist.entity.User; import tk.mybatis.mapper.common ...
- ZZW_shell脚本中的调用MYSQL传参及注意的问题
[oracle@ip9140 db_pcc]$ cat zzw_cc.sh #!/bin/bash z_user='pcc_csuser22'z_pass='pcc_csuser22'z_db='db ...
- JavaScript 复杂判断的更优雅写法
我们编写js代码时经常遇到复杂逻辑判断的情况,通常大家可以用if/else或者switch来实现多个条件判断,但这样会有个问题,随着逻辑复杂度的增加,代码中的if/else/switch会变得越来越臃 ...
- CSS布局-body高度不等于页面高度
记录采坑: 博客记录问题,用作回忆用,不喜勿喷! html,body{width: 100%; height: 100%}这是初始定义的宽高.在布局越写越复杂的时候,布局很容易出现问题,例如一个页面中 ...
- day41-python多进程多线程-多线程共享
线程共享变量多线程和多进程不同之处在于多线程本身就是可以和父进程共享内存的,这也是为什么其中一个线程挂掉以后,为什么其他线程也会死掉的道理. import threading def worker() ...