线段树+离散化+扫描线

AC之后,又认真读了一遍题目,好文章。

#include<cstdio>
#include<map>
#include<algorithm>
using namespace std; const int maxn=+;
int n;
long long W,H;
long long x[maxn],y[maxn],v[maxn];
struct seg
{
long long X;
long long Y1,Y2;
long long val;
}s[*maxn];
struct SegTree
{
long long MAX;
long long add;
}segTree[*maxn]; map<long long,int>m;
long long M[maxn];
int k; bool cmp(const seg&a,const seg&b)
{
if(a.X==b.X) return a.val>b.val;
return a.X<b.X;
} void pushUp(int rt)
{
segTree[rt].MAX=max(segTree[*rt].MAX,segTree[*rt+].MAX);
} void pushDown(int rt)
{
if(segTree[rt].add)
{
segTree[*rt].add+=segTree[rt].add;
segTree[*rt+].add+=segTree[rt].add;
segTree[*rt].MAX+=segTree[rt].add;
segTree[*rt+].MAX+=segTree[rt].add;
segTree[rt].add=;
}
} void build(int l,int r,int rt)
{
segTree[rt].add=;
segTree[rt].MAX=;
if(l==r) return; int m=(l+r)/;
build(l,m,*rt);
build(m+,r,*rt+);
} void update(long long val,int L,int R,int l,int r,int rt)
{
if(L<=l&&r<=R)
{
segTree[rt].add+=val;
segTree[rt].MAX+=val;
return;
} pushDown(rt);
int m=(l+r)/;
if(L<=m) update(val,L,R,l,m,*rt);
if(R>m) update(val,L,R,m+,r,*rt+);
pushUp(rt);
} void lsh()
{
m.clear();
k=;
for(int i=;i<=n;i++)
{
if(m[y[i]]==)
{
m[y[i]]=;
M[k++]=y[i];
}
if(m[y[i]+H-]==)
{
m[y[i]+H-]=;
M[k++]=y[i]+H-;
}
}
sort(M,M+k);
//m.clear(); 这个地方比较奇葩。清空了会TLE。。。。
for(int i=;i<k;i++) m[M[i]]=i+;
} int main()
{
//freopen("F:\\in.txt","r",stdin);
while(~scanf("%d%lld%lld",&n,&W,&H))
{
for(int i=;i<=n;i++) scanf("%lld%lld%lld",&x[i],&y[i],&v[i]);
lsh();
int tot=;
for(int i=;i<=n;i++)
{
s[tot].X=x[i];
s[tot].Y1=m[y[i]];
s[tot].Y2=m[y[i]+H-];
s[tot].val=v[i];
tot++; s[tot].X=x[i]+W-;
s[tot].Y1=m[y[i]];
s[tot].Y2=m[y[i]+H-];
s[tot].val=-v[i];
tot++;
} sort(s,s+tot,cmp); build(,k,); long long max_val=; for(int i=;i<tot;i++)
{
update(s[i].val,s[i].Y1,s[i].Y2,,k,);
max_val=max(segTree[].MAX,max_val);
}
printf("%lld\n",max_val);
}
return ;
}

POJ 2482 Stars in Your Window的更多相关文章

  1. poj 2482 Stars in Your Window(扫描线)

    id=2482" target="_blank" style="">题目链接:poj 2482 Stars in Your Window 题目大 ...

  2. POJ 2482 Stars in Your Window(线段树)

    POJ 2482 Stars in Your Window 题目链接 题意:给定一些星星,每一个星星都有一个亮度.如今要用w * h的矩形去框星星,问最大能框的亮度是多少 思路:转化为扫描线的问题,每 ...

  3. poj 2482 Stars in Your Window + 51Nod1208(扫描线+离散化+线段树)

    Stars in Your Window Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 13196   Accepted:  ...

  4. 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 ...

  5. (中等) POJ 2482 Stars in Your Window,静态二叉树。

    Description Here comes the problem: Assume the sky is a flat plane. All the stars lie on it with a l ...

  6. poj 2482 Stars in Your Window (线段树:区间更新)

    题目链接:http://poj.org/problem?id=2482 读完题干不免有些心酸(

  7. POJ 2482 Stars in Your Window(扫描线+线段树)

    [题目链接] http://poj.org/problem?id=2482 [题目大意] 给出一些点的二维坐标和权值,求用一个长H,宽W的矩形能框住的最大权值之和, 在矩形边缘的点不计算在内 [题解] ...

  8. POJ 2482 Stars in Your Window 离散化+扫描法 线段树应用

    遇见poj上最浪漫的题目..题目里图片以上几百词为一篇模板级英文情书.这情感和细腻的文笔深深地打动了我..不会写情书的童鞋速度进来学习.传送门 题意:坐标系内有n个星星,每个星星都有一个亮度c (1& ...

  9. POJ 2482 Stars in Your Window (线段树+扫描线+区间最值,思路太妙了)

    该题和 黑书 P102 采矿 类似 参考链接:http://blog.csdn.net/shiqi_614/article/details/7819232http://blog.csdn.net/ts ...

随机推荐

  1. mysql 排序后获得某行的位置

    假设有test表,下图为表机构和数据,score表示积分.现在要查询积分排名为第几的id?? 查询语句 select id,score,(@rowno:=@rowno+1) as rowno from ...

  2. oracle的exp和imp命令的使用【转载】

    oracle的exp和imp命令的使用     我们通常要对ORACLE的数据进行导入,导出,在没有expdb,impdb以前(10G以前),我们都是使用exp 导出,imp命令来实现导入.   打开 ...

  3. pch文件的配置与路径修改

  4. 用ifconfig命令,只有lo,没有eth0的解决方案

    解决方案: 1. 进入/etc/sysconfig/network-scripts 目录,发现有ifcfg-eth0,即网卡(驱动)存在但未启用. 2. 输入ifconfig -a命令,可显示eth0 ...

  5. java transient修饰符

    1)一旦变量被transient修饰,变量将不再是对象持久化的一部分,该变量内容在序列化后无法获得访问. 2)transient关键字只能修饰变量,而不能修饰方法和类.注意,本地变量是不能被trans ...

  6. AJax的异步请求

    AJax的处理过程 1、传统的Web请求过程: 一般的 Web 应用程序中,用户填写表单字段并单击 Submit 按钮.然后整个表单发送到服务器,服务器将它转发给处理表单的脚本(通常是 PHP 或 J ...

  7. linux的学习系列 9--网络通信

    ping 命令 ping 命令会向网络上的主机发送应答请求,根据响应信息可以判断远程主机是否可用. ping 命令的语法: $ping hostname or ip-address 如果网络畅通,很快 ...

  8. apache php 配置 CI 框架

    声明:配置域名需要用到  httpd.conf  httpd_vhosts.conf  (apache) 中两个文件 和   hosts (C:\Windows\System32\drivers\et ...

  9. JVM垃圾收集算法——分代收集算法

    分代收集算法(Generational Collection): 当前商业虚拟机的垃圾收集都采用"分代收集算法". 这种算法并没有什么新的思想,只是根据对象存活周期的不同将内存划分 ...

  10. JS取非行间样式

    <title>无标题文档</title> <style> #div1{width:200px;height:200px; background:red;} < ...