poj2482Stars in Your Window(线段树+离散化+扫描线)
http://poj.org/problem?id=2482
类似于上一篇 这题转化的比较巧妙 将一个点转化为一个矩形(x,y, x+w,y+h),扫描线入值为正 出值为负
也就是一根线过去 每进入一个矩形 都更新线上的总值 取一个最大值
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define N 20010
#define LL long long
struct node
{
LL lx,rx,y,s;
node(){}
node(LL a,LL b,LL c,LL d):lx(a),rx(b),y(c),s(d){}
bool operator <(const node &S)const
{
if(y==S.y)
return s>S.s;
return y<S.y;
}
}te[N];
int sum[N<<],cov[N<<],que[N];
int bin(LL x,int n)
{
int s=,e = n,m;
while(s<=e)
{
m = (s+e)/;
if(que[m]==x)
return m;
else if(que[m]>x)
e = m-;
else
s = m+;
}
return m;
}
void pushdown(int w)
{
if(cov[w])
{
cov[w<<] += cov[w];
cov[w<<|] += cov[w];
sum[w<<] += cov[w];
sum[w<<|] += cov[w];
cov[w] = ;
}
}
void pushup(int w)
{
sum[w] = max(sum[w<<],sum[w<<|]);
}
void update(int a,int b,int d,int l,int r,int w)
{
if(a<=l&&b>=r)
{
sum[w]+=d;
cov[w]+=d;
return ;
}
pushdown(w);
int m = (l+r)>>;
if(a<=m)
update(a,b,d,l,m,w<<);
if(b>m)
update(a,b,d,m+,r,w<<|);
pushup(w);
}
int main()
{
int i,k,n;
LL w,h,x,y,v;
while(cin>>n>>w>>h)
{
int num = ;
w--;h--;
for(i = ; i <= n ;i++)
{
cin>>x>>y>>v;
que[num] = x;
te[num++] = node(x,x+w,y,v);
que[num] = x+w;
te[num++] = node(x,x+w,y+h,-v);
}
sort(que,que+num);
sort(te,te+num);
k = ;
for(i = ; i < num ; i++)
{
if(que[i]!=que[i-])
que[k++] = que[i];
}
int maxz = ;
for(i = ; i < num ; i++)
{
int l = bin(te[i].lx,k-);
int r = bin(te[i].rx,k-);
update(l,r,te[i].s,,k-,);
maxz = max(maxz,sum[]);
}
cout<<maxz<<endl;
}
return ;
}
poj2482Stars in Your Window(线段树+离散化+扫描线)的更多相关文章
- 【POJ 2482】 Stars in Your Window(线段树+离散化+扫描线)
[POJ 2482] Stars in Your Window(线段树+离散化+扫描线) Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...
- hdu1542 矩形面积并(线段树+离散化+扫描线)
题意: 给你n个矩形,输入每个矩形的左上角坐标和右下角坐标. 然后求矩形的总面积.(矩形可能相交). 题解: 前言: 先说说做这道题的感受: 刚看到这道题顿时就懵逼了,几何 烂的渣渣.后来从网上搜题解 ...
- POJ1151Atlantis 矩形面积并[线段树 离散化 扫描线]
Atlantis Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21734 Accepted: 8179 Descrip ...
- POJ 1151Atlantis 矩形面积并[线段树 离散化 扫描线]
Atlantis Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 21734 Accepted: 8179 Descrip ...
- hdu1542线段树+离散化+扫描线
参考博客: http://blog.csdn.net/xingyeyongheng/article/details/8927732 总的来说就是用一条(假想的)线段去平行x轴从下往上扫描,扫描的过程中 ...
- Picture POJ - 1177 线段树+离散化+扫描线 求交叉图像周长
参考 https://www.cnblogs.com/null00/archive/2012/04/22/2464876.html #include <stdio.h> #include ...
- POJ 1177/HDU 1828 picture 线段树+离散化+扫描线 轮廓周长计算
求n个图矩形放下来,有的重合有些重合一部分有些没重合,求最后总的不规则图型的轮廓长度. 我的做法是对x进行一遍扫描线,再对y做一遍同样的扫描线,相加即可.因为最后的轮廓必定是由不重合的线段长度组成的, ...
- HDU 1542 线段树离散化+扫描线 平面面积计算
也是很久之前的题目,一直没做 做完之后觉得基本的离散化和扫描线还是不难的,由于本题要离散x点的坐标,最后要计算被覆盖的x轴上的长度,所以不能用普通的建树法,建树建到r-l==1的时候就停止,表示某段而 ...
- Codeforces 610D Vika and Segments 线段树+离散化+扫描线
可以转变成上一题(hdu1542)的形式,把每条线段变成宽为1的矩形,求矩形面积并 要注意的就是转化为右下角的点需要x+1,y-1,画一条线就能看出来了 #include<bits/stdc++ ...
随机推荐
- JSON参数解析工具类
/// <summary> /// 解析JSON参数 /// </summary> public class JSONParser { JObject jObj = null; ...
- android系统网络信号强弱参数之ecsq指令参数说明
ecsq指令参数说明: // For LTE (MT6592) // AT+ECSQ:<sig1>,<sig2>,<rssi_in_qdbm>,<rscp_i ...
- php下删除一篇文章生成的多个静态页面
php自定义函数之删除一篇文章生成的多个静态页面,可能有多页的文章,都是需要考虑到的. 复制代码代码如下: //– 删除一篇文章生成的多个静态页面 //– 生成的文章名为 5.html 5_2.ht ...
- 数据可视化(一)-Matplotlib简易入门
本节的内容来源:https://www.dataquest.io/mission/10/plotting-basics 本节的数据来源:https://archive.ics.uci.edu/ml/d ...
- wpf 绑定失效的原因及解决方案
有时候,您会发现在程序开始时还能正常运行的绑定失效了.就个人经验而言,绑定的失效主要分为两种情况:对于One-way绑定而言,如果软件开发人员绕过绑定直接更改了目标属性,那么绑定将会失效.而对于Two ...
- 2014年辛星完全解读Javascript第六节 对象
随着面向对象的普及,现在很多语言都在支持面向对象,Javascript也不例外,所谓对象,就是拥有属性和方法的数据.这里的属性其实就是变量,这里的方法,其实就是函数.但是Javascript的面向对象 ...
- IOS 学习教程
IOS 学习教程http://www.gaixue.com/course/236#### 讲课http://wenku.baidu.com/view/6786064fe518964bcf847c63. ...
- 【BZOJ 3172】 [Tjoi2013]单词
Description 某人读论文,一篇论文是由许多单词组成.但他发现一个单词会在论文中出现很多次,现在想知道每个单词分别在论文中出现多少次. Input 第一个一个整数N,表示有多少个单词,接下来N ...
- 【HDU2222】Keywords Search
Problem DescriptionIn the modern time, Search engine came into the life of everybody like Google, Ba ...
- mybatis的javaType和ofType
都是指定对象的类型 不同的是当使用反向查询select从另一个maper文件中取出数据时必须用ofType 都可以为collection和association是指定对象的类型, 都不是必须写的, 只 ...