离散化后,[1,10]=[1,3]+[6,10]就丢了[4,5]这一段了。

因为更新[3,6]时,它只更新到[3,3],[6,6]。

要么在相差大于1的两点间加入一个值,要么就让左右端点为l,r的线段树节点表示到x[l]到x[r+1]的区间。

这样tree[l,r]=tree[l,m]+tree[m+1,r]=[x[l],x[m+1]]+[x[m+1],x[r+1]]

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define ll long long
#define N 2005
using namespace std;
struct P{ll s,e,h,f;}p[N];
struct Tree{ll sum,c;}t[N<<];
int x[N],n,m,ans;
int cmp(const P &a,const P &b){
return a.h<b.h;
}
void init(){
n=m=ans=;
memset(p,,sizeof p);
memset(t,,sizeof t);
x[]=-;
}
void pushUp(ll rt,ll l,ll r){
if(t[rt].c)t[rt].sum=x[r+]-x[l];
else if(l==r)t[rt].sum=;
else t[rt].sum=t[rt<<].sum+t[rt<<|].sum;
}
void update(ll s,ll e,ll rt,ll l,ll r,ll v){
if(s<=l&&r<=e) t[rt].c+=v;
else {
if(l>e||r<s)return;
ll m=l+r>>;
update(s,e,rt<<,l,m,v);
update(s,e,rt<<|,m+,r,v);
}
pushUp(rt,l,r);
}
int main()
{
int a,b,c,d;
init();
while(cin>>a>>b>>c>>d){
if(a<)break;
while(a>=){
p[++n].s=a,p[n].e=c,p[n].h=b,p[n].f=;x[n]=a;
p[++n].s=a,p[n].e=c,p[n].h=d,p[n].f=-;x[n]=c;
cin>>a>>b>>c>>d;
}
sort(x+,x++n);
for(int i=;i<=n;i++)
if(x[i]!=x[i-])x[++m]=x[i]; sort(p+,p++n,cmp);
for(int i=;i<n;i++){
int l=lower_bound(x,x+m,p[i].s)-x;
int r=lower_bound(x,x+m,p[i].e)-x-; update(l,r,,,m,p[i].f);
ans+=t[].sum*(p[i+].h-p[i].h);
}
cout<<ans<<endl;
init();
}
return ;
}
  

【POJ 1389】Area of Simple Polygons(线段树+扫描线,矩形并面积)的更多相关文章

  1. POJ 1389 Area of Simple Polygons 扫描线+线段树面积并

    ---恢复内容开始--- LINK 题意:同POJ1151 思路: /** @Date : 2017-07-19 13:24:45 * @FileName: POJ 1389 线段树+扫描线+面积并 ...

  2. [poj] 1389 Area of Simple Polygons

    原题 线段树+扫描线 对于这样一个不规则图形,我们要求他的面积有两种方法,割和补. 补显然不行,因为补完你需要求补上去的内部分不规则图形面积-- 那么怎么割呢? 像这样: 我们就转化成了无数个矩形的和 ...

  3. POJ1389 Area of Simple Polygons 线段树

    POJ1389 给定n个整数点矩形,求面积并. 显然ans必然是整数. 记录若干个事件,每个矩形的左边的竖边记为开始,右边的竖边记为结束. 进行坐标离散化后用线段树维护每个竖的区间, 就可以快速积分了 ...

  4. POJ 1389 Area of Simple Polygons | 扫描线

    请戳此处 #include<cstdio> #include<algorithm> #include<cstring> #define N 1010 #define ...

  5. hdu 1828 Picture(线段树扫描线矩形周长并)

    线段树扫描线矩形周长并 #include <iostream> #include <cstdio> #include <algorithm> #include &l ...

  6. HDU 1264 Counting Squares (线段树-扫描线-矩形面积并)

    版权声明:欢迎关注我的博客.本文为博主[炒饭君]原创文章,未经博主同意不得转载 https://blog.csdn.net/a1061747415/article/details/25471349 P ...

  7. hdu1828 Picture(线段树+扫描线+矩形周长)

    看这篇博客前可以看一下扫描线求面积:线段树扫描线(一.Atlantis HDU - 1542(覆盖面积) 二.覆盖的面积 HDU - 1255(重叠两次的面积))  解法一·:两次扫描线 如图我们可以 ...

  8. poj 3277 City Horizon (线段树 扫描线 矩形面积并)

    题目链接 题意: 给一些矩形,给出长和高,其中长是用区间的形式给出的,有些区间有重叠,最后求所有矩形的面积. 分析: 给的区间的范围很大,所以需要离散化,还需要把y坐标去重,不过我试了一下不去重 也不 ...

  9. POJ 2482 Stars in Your Window 线段树扫描线

    Stars in Your Window   Description Fleeting time does not blur my memory of you. Can it really be 4 ...

  10. HDU 1542 Atlantis(线段树扫描线+离散化求面积的并)

    Atlantis Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

随机推荐

  1. [No00001B]到底如何培养语感?

  2. Types of intraclass correlation coefficience (ICC)

    Reference: Andellini M, Cannatà V, Gazzellini S, et al. Test-retest reliability of graph metrics of ...

  3. CentOS 7.0 Nvidia显卡安装步骤

    from: http://blog.sina.com.cn/s/blog_49c0985a0102v3fa.html CentOS 7.0 Nvidia显卡安装步骤: 1 在英伟达官网下载相应驱动 搜 ...

  4. SQL Server 用SSMS查看依赖关系有时候不准确,改用代码查

    SQL Server 用SSMS查看依赖关系有时候不准确,明明某个sp中有用到表tohen,查看表tohen的依赖关系的时候,却看不到这个sp 用代码查看方式如下: --依赖于表tohen的对象 SE ...

  5. Spring Security笔记:解决CsrfFilter与Rest服务Post方式的矛盾

    基于Spring Security+Spring MVC的web应用,为了防止跨站提交攻击,通常会配置csrf,即: <http ...> ... <csrf /> </ ...

  6. Redis简介-安装-入门

    前言 我们team马上要用Redis了. 所以先学习一下这东西. Redis大名很早以前就听过了,以前在的公司都没有用到. 现在有机会终于接触到了,果断学习起来. 什么是redis Redis是完全开 ...

  7. 【位运算经典应用】 N皇后问题

    说到位运算的经典应用,不得不说N皇后问题. 学过程序设计的都知道N皇后问题,没听过也没关系.很简单,最传统的的N皇后问题是这个样子的,给你一个n * n大小的board,让你放n个皇后(国际象棋),要 ...

  8. 各种主流 SQLServer 迁移到 MySQL 工具对比

          我之所以会写这篇对比文章,是因为公司新产品研发真实经历过这个痛苦过程(传统基于SQL Server开发的C/S产品转为MySQL云产品).首次需要数据转换是测试环节,当时为了快速验证新研发 ...

  9. 【监控】WebServer入库与缓存更新代码优化小计

    问题描述: 通过WebServer将监控数据入库到Hbase,在入库之前需要将指标与ip的列表更新到缓存中,以便前台页面随时选择查看.前两天上了一些新用户导致负载增加,逐渐发现某些用户的监控场景出现丢 ...

  10. 程序猿看小说还要去找TXT?自己动手爬一个TXT才是正确的打开方式

    前言 在贴吧看了个小说追了几天被删帖了,于是自己找书名,打算下载下来看,结果要么是需要充值,要么不提供下载.作为一个猿类,怎么能忍. 好在小说网站多入牛毛,有的采用js加载文字来防采集,有的用css图 ...