POJ - 2482:Stars in Your Window (扫描线 )
题意:二维平面上给你N颗星,给出星星的坐标,亮度; 然后给你一个W*H的窗口,问你最大的亮度和。
思路:扫描线,假设有一个inf*H的窗口,按照y排序,那么就把H范围内的星星放入了这个窗口(单调队列实现),现在就成了华东窗口问题,在一维数组里面找长度为W的窗口的最大和,但是现在带修改,单点修改,固定区间查询,怎么做呢? 和学生讨论了一下,常规的很难实现。 我们需要转化一下,把单点修改转化为区间修改,然后单点查询最大值。 如果x处插入L,则[x,Rx]区间加x。 ans=max(mx[1]);
(可以出一道,待修改的滑动窗口问题。
#include<iostream>
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
struct in{
int x,y,l;
bool friend operator <(in w,in v){
return w.y<v.y;
}
}s[maxn];
int ans,W,H,lazy[maxn],mx[maxn];
int b[maxn],tot,p[maxn];
void pushdown(int Now)
{
if(!lazy[Now]) return ;
lazy[Now<<]+=lazy[Now]; lazy[Now<<|]+=lazy[Now];
mx[Now<<]+=lazy[Now]; mx[Now<<|]+=lazy[Now];
lazy[Now]=;
}
void add(int Now,int L,int R,int l,int r,int val)
{
if(l<=L&&r>=R){
mx[Now]+=val;
lazy[Now]+=val;
return ;
}
pushdown(Now); int Mid=(L+R)>>;
if(l<=Mid) add(Now<<,L,Mid,l,r,val);
if(r>Mid) add(Now<<|,Mid+,R,l,r,val);
mx[Now]=max(mx[Now<<],mx[Now<<|]);
}
int main()
{
int T,N;
while(~scanf("%d%d%d",&N,&W,&H)){
ans=; tot=;
rep(i,,N) scanf("%d%d%d",&s[i].x,&s[i].y,&s[i].l);
sort(s+,s+N+);
rep(i,,N<<) lazy[i]=mx[i]=;
rep(i,,N) b[++tot]=s[i].x;
sort(b+,b+N+);
tot=unique(b+,b+N+)-(b+);
rep(i,,N) s[i].x=lower_bound(b+,b+tot+,s[i].x)-b;
int R=;
rep(i,,tot) {
while(R+<=tot&&b[R+]-b[i]+<=W) R++;
p[i]=R;
}
for(int i=,j=;i<=N;i++){
add(,,tot,s[i].x,p[s[i].x],s[i].l);
while(j<=i&&s[i].y-s[j].y+>H) {
add(,,tot,s[j].x,p[s[j].x],-s[j].l);
j++;
}
ans=max(ans,mx[]);
}
printf("%d\n",ans);
}
return ;
}
POJ - 2482:Stars in Your Window (扫描线 )的更多相关文章
- poj 2482 Stars in Your Window(扫描线)
id=2482" target="_blank" style="">题目链接:poj 2482 Stars in Your Window 题目大 ...
- POJ 2482 Stars in Your Window(线段树)
POJ 2482 Stars in Your Window 题目链接 题意:给定一些星星,每一个星星都有一个亮度.如今要用w * h的矩形去框星星,问最大能框的亮度是多少 思路:转化为扫描线的问题,每 ...
- poj 2482 Stars in Your Window + 51Nod1208(扫描线+离散化+线段树)
Stars in Your Window Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 13196 Accepted: ...
- 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 ...
- (中等) 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 ...
- POJ 2482 Stars in Your Window(扫描线+线段树)
[题目链接] http://poj.org/problem?id=2482 [题目大意] 给出一些点的二维坐标和权值,求用一个长H,宽W的矩形能框住的最大权值之和, 在矩形边缘的点不计算在内 [题解] ...
- POJ 2482 Stars in Your Window (线段树区间合并+扫描线)
这题开始一直被矩形框束缚了,想法一直都是枚举线,但是这样枚举都需要O(n^2)...但是看了别人的思路,感觉这题思想真心很好(PS:开头好浪漫的描述啊,可惜并没有什么用) 题意就是在平面上给你一些星 ...
- POJ 2482 Stars in Your Window (线段树+扫描线+区间最值,思路太妙了)
该题和 黑书 P102 采矿 类似 参考链接:http://blog.csdn.net/shiqi_614/article/details/7819232http://blog.csdn.net/ts ...
- poj 2482 Stars in Your Window (线段树扫描线)
题目大意: 求一个窗体覆盖最多的星星的权值. 思路分析: 每个星星看成 左下点为x y 右上点为x+w-1 y+h-1 的矩形. 然后求出最大覆盖的和. #include <cstdio> ...
- POJ 2482 Stars in Your Window(线段树+扫描线)
题目链接 非常不容易的一道题,把每个点向右上构造一个矩形,将问题转化为重合矩形那个亮度最大,注意LL,注意排序. #include <cstdio> #include <cstrin ...
随机推荐
- Delphi文字转语音TTS【支持选择语音库,播放,暂停,开始,停止,生成语音文件,设置音量,设置语速】
作者QQ:(648437169) 点击下载➨文字转语音TTS [Delphi 文字转语音TTS]调用系统自带的TTS组件,支持XP,vista,win7,win8,win10系统,支持选择语音库,播放 ...
- Django-12-auth认证组件
1. 介绍 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码等功能. Django作为一个完美主义者的终极框架,当然也会 ...
- 带小伙伴手写 golang context
前言 - context 源码 可以先了解官方 context.go 轮廓. 这里捎带保存一份当前 context 版本备份. // Copyright 2014 The Go Authors. Al ...
- 去除Chrome“请停用以开发者模式运行的扩展程序”提示
将version.dll放在chrome同级目录,重启浏览器( 79.0.3945.79版本后已失效)
- 第1课(续集),python turtle库的使用
原文再续,书接上一回 上回讲到了,python IDLE的草稿本和作业本,并顺便试了试python的输入输出,变量,运算的体验,大家应该能感受到python的简单了吧. 下面我们继续体验python的 ...
- STC单片机Flash做EEPROM的代码
STC官方给出的建议: /***************************************************************Author:Liming*** * @brie ...
- 【读书笔记】胡说IC
- 《Effective Objective-C》概念篇
1.运行时 OC 语言由 Smalltalk(20世纪70年代出现的一种面向对象的语言) 演化而来,后者是消息型语言的鼻祖. OC 使用动态绑定的消息结构,在运行时检查对象类型. 使用消息结构的语言, ...
- 「UR#6」懒癌
「UR#6」懒癌 妈妈我居然看了六个小时题解,快救救乌干达的可怜儿童吧. 接下来开始膜官方题解: 其实就算有上面两个结论也不是很好想到任意复杂度的做法,关键在于要想到一个人是怎么推断自己的狗是不是 ...
- java基础 Arrays
package cn.mantishell.day08.demo04; import java.util.Arrays; /** * java.util.Arrays是一个与数组相关的工具类,里面提供 ...