POJ 2482 Stars in Your Window 线段树+扫描线

POJ 2482 Stars in Your Window(线段树扫描线+最浪漫的题意) Fleeting time does not blur my memory of you. Can it really be 4 years since I first saw you? I still remember, vividly, on the beautiful Zhuhai Campus, 4 years ago, from the moment I saw you smile, as you were walking out of the classroom and turned your 阅读详情

妈个鸡,要不是队友提醒,我能把题面上的那封情书读完,读了一半多了都

然后题意就是,在一个平面直角坐标系上,有一些点,每个点有一个权值,用一个矩形框去框住他们,问怎么才能使框住的所有点的权值和最大,边界上的点不算。

边界上的点 不算,我之前只做到过一次边界上的点算的啊,怎么办,把长和宽都各自-1就好啦。处理之后,设长为w,宽为h。

大概就是,把一个点沿一个方向,假如说是x轴,沿x轴向正方向延长w个长度,然后这是一条入边,在y+h+1上,建一条相应的出边,就是权值取个负数,就相当于把这条边又给删去啦。

然后将所有的边按y排序,根据y从小到大,加入边,就是更新(x,x+w)这个区间。想想,这样的话,某一点 x0就可以有x0为右边界的矩形的框住的权值和,然后y又是从下往上扫的,而且还有出边,所以(x0,y0)表示以这个点为右上角的矩形框住的权值和。

比如我们更新到了y=yi,在把所有y=yi的边都更新之后,线段树存的是x,对应的最大值。所以线段树的根的最大值,就代表在y=yi下(xi,yi)为右上角的矩形框住最大权值和。

然后y从0扫到最大值,就可以得到最大权值和啦。

代码:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
#define maxn 10002
#define uint unsigned int
uint x_data[maxn * 2], y_data[maxn * 2];
struct Node
{
	unsigned int x, y;
	int val;
	void made(unsigned int a, unsigned int b,int c)
	{
		x = a, y = b, val = c;
	}
}node[maxn];
struct edge_mode
{
	int y, l, r, val;
	void edge_make(int y, int l, int r, int val)
	{
		this->y = y;
		this->l = l;
		this->r = r;
		this->val = val;
	}
}edge[20005];
struct segment
{
	int add, max;
}segtree[160005];
bool cmp(edge_mode a, edge_mode b)
{
	if (a.y < b.y) return true;
	else return false;
}
void init(int id, int l, int r)
{
	segtree[id].add = segtree[id].max = 0;
	if (l == r) return;
	init(id << 1, l, (l + r) >> 1);
	init(id << 1 | 1, ((l + r) >> 1) + 1, r);
}
void update(int id, int l, int r, int nl, int nr, int val)
{
	if (r<nl || l>nr) return;
	if (l >= nl&&r <= nr)
	{
		segtree[id].add += val;
		segtree[id].max += val;
		return;
	}
	update(id << 1, l, (l + r) >> 1, nl, nr, val);
	update(id << 1 | 1, ((l + r) >> 1) + 1, r, nl, nr, val);
	segtree[id].max = max(segtree[id << 1].max, segtree[id << 1 | 1].max) + segtree[id].add;
}
int main()
{
	//freopen("input.txt", "r", stdin);
	int n, w, h;
	while ((scanf("%d%d%d", &n, &w, &h)) == 3)
	{
		--w, --h;
		init(1, 0, 20000);
		//unsigned int x, y;
		for (int i = 0; i < n; ++i)
		{
			scanf("%u%u%d", &node[i].x, &node[i].y, &node[i].val);
			x_data[2 * i] = node[i].x, x_data[2 * i + 1] = node[i].x + w;
			y_data[2 * i] = node[i].y, y_data[2 * i + 1] = node[i].y + h + 1;
		}
		sort(x_data, x_data + 2 * n);
		sort(y_data, y_data + 2 * n);
		uint x_d = unique(x_data, x_data + 2 * n) - x_data, y_d = unique(y_data, y_data + 2 * n) - y_data;
		for (int i = 0; i < n; ++i)
		{
			int x1 = lower_bound(x_data, x_data + x_d, node[i].x) - x_data;
			int y1 = lower_bound(y_data, y_data + y_d, node[i].y) - y_data;
			int x2 = lower_bound(x_data, x_data + x_d, node[i].x + w) - x_data;
			int y2 = lower_bound(y_data, y_data + y_d, node[i].y + h + 1) - y_data;
			edge[2 * i].edge_make(y1, x1, x2, node[i].val);
			edge[2 * i + 1].edge_make(y2, x1, x2, -1 * node[i].val);
			//printf("%d %d %d %d %d\n", x1, y1, x2, y2, node[i].val);
		}
		sort(edge, edge + 2 * n, cmp);
		int ans = 0;
		for (int i = 0, t = 0; i <= 20000; i++)
		{
			while (edge[t].y == i&&t < 2 * n)
			{
				update(1, 0, 20000, edge[t].l, edge[t].r, edge[t].val);
				t++;
			}
			//if (i <= 5)
				//printf("%d\n", segtree[1].max);
			ans = max(ans, segtree[1].max);
		}
		printf("%d\n", ans);
	}
	//while (1);
	return 0;
}

无感健康监测的未来:毫米波雷达如何重新定义睡眠科技与居家养老 毫米波雷达技术正重新定义无感健康监测,特别是在睡眠科技与居家养老领域。通过精准监测呼吸、心率和体动,无需穿戴设备即可实现临床级精度。结合合宙Air700E开发板,构建了完整的远程看护解决方案,为老年人提供跌倒检测、异常报警等安全保障,同时保护用户隐私。 阅读详情

相关推荐

保姆级教程:在RK3588开发板上编译带MPP硬件加速的FFmpeg(含完整依赖库配置)

本文提供在RK3588开发板上编译支持MPP硬件加速的FFmpeg的详细教程,涵盖交叉编译环境搭建、MPP框架及依赖库配置,最终实现4K视频硬件编解码性能优化。通过实战步骤和性能对比,展示如何充分发挥RK3588的硬件加速能力。

weixin_30839881的博客 418

POJ 2482 Stars in Your Window(扫描线)

题意:给你10000以内的星星的坐标和星星的亮度(即分别为x,y,c),要求用W*H的矩形去围住一个区域,使得这个区域内的星星的亮度最大,并且要求矩形边框上的星星不计入内。矩形可以平移,但不能旋转。 对于每一个星星,分别建立线(x,y,y+H,c)和(x+W,y,y+H,-c)。这样处理的原因是我们就可以把问题转化成求线段树里某一段内的最大值,即区间查询。矩形边框上的星星不计的处理方法是:1.对

2603

OnePose++: Keypoint-Free One-Shot Object Pose Estimation without CAD Models

算法:首先采用LoFTR的细匹配模块,将粗匹配点周围的小窗口内,通过对比特征找到最相似的位置,细化当前特征点的位置。算法:PnP算法,利用3D点和2D投影点的对应关系,计算相机相对于物体的6D姿态(位置朝向)。算法:使用COLMAP,对2D粗匹配对(不依赖传统关键点匹配)进行特征轨迹计算并生成半稠密点云,每个3D点包含坐标和对应的2D投影点。算法:LoFTR粗匹配模块,将每一个像素点视为伪关键点,生成半稠密的2D匹配对。输入:优化后的3D、当前视图的2D特征点。输出:粗半稠密点云以及物体的特征轨迹。

雨落倾城的博客 884

【POJ】Stars in Your Window-线段树+扫描线

传送门:poj2482-Stars in Your Window Description Assume the sky is a flat plane. All the stars lie on it with a location (x, y). for each star, there is a grade ranging from 1 to 100, representing i...

远行客 357

遗传算法优化光学超表面:智能设计突破纳米结构瓶颈

光学超表面设计本质上是一个高维、非线性、离散每个结构单元(如纳米砖柱、孔洞、十字架)有多个参数(长、宽、高、旋转角、材料),整个阵列的参数组合数量随单元数指数级增长。性能指标(如聚焦效率、工作带宽、偏振转换率、特定角度响应)往往无法用简单解析式表达,需依赖计算密集型电磁仿真(如FDTD, FDFD, RCWA)来评估。结构参数微小变化可能引起光学响应的剧烈跃变,目标函数存在多个局部最优解。实际制造通常要求结构参数取自有限的离散值(如特定刻蚀深度、材料库)。

weixin_51101456的博客 1140

全国各省份影像下载地址(11级别)

cesium中使用urltemplate加载,leaflet中使用tile加载,具体加载有问题可以给我留言。

资深三维GIS开发 5141

【POJ 2482】 Stars in Your Window(线段树+离散化+扫描线)

【POJ 2482】 Stars in Your Window(线段树+离散化+扫描线) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11294   Accepted: 3091 Description Fleeting time does not ...

weixin_34166847的博客 216

Origin教程004:Origin图形导出

需要编辑的话,双击图形,会自动用origin软件打开图形,这种方式是最开始导出图形的功能,方式一和二都是后面增加的。如果导出的图片边距较大的时候,会影响图片的美观,可以通过。也可以设置在PPT中直接编辑,找到。解决方法是,选择一条线,

WwLK123的博客 6327

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

题意: 背景真是令人感动,我都看得哭了...... 前面的自己看吧。 给出星星的坐标和亮度,给定一个矩形(长/宽),求框住的星星亮度和的最大值,恰好在边上的不算。 分析: 一个月前在上海邀请赛就有这样的题,当时我线段树只会成段更新,所以那道题目也没碰... 我们这样想,每个星星能影响的范围就是给定矩形的面积,为方便起见,不妨设星星的位置为矩形的左下角。 那么在这个范围内的点全部加上它的亮度,最终我们就是求该平面内的最大值。 这样的话就要用到二维线段树...可是有10k颗星星...这要开多大的数组啊.....

fcbruce 2716

把 SAP GUI 做成可维护的应用:Module Pool 基础与 Table Control 深入实战

SAP Module Pool 与 Table Control 开发要点 摘要:Module Pool 作为 SAP GUI 交互的核心技术,由程序、屏幕(Dynpro)和流逻辑(Flow Logic)组成,通过 PBO/PAI 事件驱动数据流。Table Control 是其中处理多行数据的核心控件,其开发关键在于: 正确理解 PBO/PAI 数据流机制 掌握 CXTAB_CONTROL 结构的关键属性(LINES、TOP_LINE 等) 合理设置列控制属性(CXTAB_COLUMN) 采用 LOOP W

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 239

Aurix TC3xx系列MCU ADC模块简介(一)

简单介绍英飞凌Aurix TC3xx系列单片机ADC模块的特点及内部结构。

m0_38045338的博客 6359

POJ2482--Stars in Your Window

Description Fleeting time does not blur my memory of you. Can it really be 4 years since I first saw you? I still remember, vividly, on the beautiful Zhuhai Campus, 4 years ago, from the moment I saw

SCUT_Pein 905

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Stars in Your Window POJ - 2482 线段树 扫描线

因为矩形的大小固定,所以矩形可以由它的任意一个顶点唯一确定。我们可以考虑把矩形的右上角顶点放在什么位置,圈住的星星亮度总和最大。 所以,对于一颗星星,能够覆盖住这颗星星的右上角的位置在区间[x+w,y+h]之间,但是由于边界上的星星不算,所以不妨将星星变为[x−0.5,y−0.5],于是右上角变为[x+w−1,y+h−1]。 问题就转化成了:平面上有若干个区域,每个区域都带有一个权值,求在哪个...

skyline的分享专栏 220

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

poj2482 Stars in Your Window hdu 5091 Beam Cannon 线段树 扫描线

今天把线段树神题2482过了,然后把弱化版的28

行走世间,皆为妖怪 997

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

POJ 2482 Stars in Your Window【线段树】【扫描线】

Stars in Your Window Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 14106   Accepted: 3847 Description Fleeting time does not blur my memory of you. Can it really be 4 ...

Head_Hard的博客 517

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

用SBT离散化的线段树扫描线

岩之痕 1503

【poj2482】Stars in Your Window (扫描线+线段树)

"Farewell,my princess!"

AFO 530

POJ 2482 Stars in Your Window 线段树+扫描线

题目 Description Fleeting time does not blur my memory of you. Can it really be 4 years since I first saw you? I still remember, vividly, on the beautiful Zhuhai Campus, 4 years ago, from the moment I s...

weixin_44273380的博客 380

POJ 2482 stars in your window(线段树 , 扫描线)

题目大意:   给你10000以内的星星的坐标和亮度,让你用一个W × H 的矩形去围住一个区域,使得区域内星星的亮度最大,矩形边缘上的星星不算。 解题思路:  对于每一个星星 建立一个(x, y , y + h , c) 的扫描线 和一个(x + w , y , y + h , - c)的扫描线,将问题转化成求区间最大值。几个需要注意的地方:矩形边缘上的需要处理一下,将每个叶节点设为长度为

蘑菇--走在通往梦想的道路上。 630

Stars in Your Window 【POJ - 2482】【线段树扫描线】

题目链接 最开始的时候做成了贪心,离线求二维前缀和,然后树状数组维护二维偏序,这样的想法是存在BUG的,因为我是将每个点当成左下角、右下角、左上角、右上角来分别计算最大贡献的,但这样的做法却不是最贪心的,因为有可能该点并不作为矩形的四个顶角,而是作为内部点时候就是一个不够贪婪的贪心。 譬如说是这种情况就不符合贪心策略 好了,找到了问题所在就方便多了,而不是去持续的debug了。 ...

既然弱小,就只顾变强就是了 271

POJ 2482 Stars in Your Window【离散化+扫描线+线段树

听说flaze太久没有更blog了……然而学渣被文化课虐的欲生欲死【假装自己五一没有花一天去ACG展子排队】 学会了离散化的新姿势 顺便感谢cyz大爷帮忙debug【虽然最后发现是flaze写丑了重新码一遍就A了【至于I64d啥的都是浮云【望天默念三声long long mian() 二话不说,上代码。。。 都是套路,第一次写没有inqry的线段树感觉连字都不会打了【 /

Flaze_的博客 617

poj 2482 Stars in Your Window(线段树,扫描线)

poj 2482 Stars in Your Window 题意,用一个矩形qu

yjCola 872

POJ 2482 Stars in Your Window(扫描线法、线段树区间加维护最大值、离散化)

POJ 2482 Stars in Your Window 蓝书线段树练习题 POJ 2482 Stars in Your Window 题意:给定nnn个星星,长www高hhh的框框。每个星星给定坐标(x,y)(x,y)(x,y),亮度ccc。问框内最大的亮度和。(边界上的亮度不记) 数据范围:n:1e4,w/h:1e6,x/y:231n:1e4,w/h:1e6,x/y:2^{31}n:1e4,...

手扶拖拉机如何改装四驱 168

POJ 2482 Stars in Your Window(离散化+线段树:扫描线)

POJ 2482 Stars in Your Window(离散化+线段树:扫描线) http://poj.org/problem?id=2482 题意:有很多点在二维平面内,每个点有一个价值,给你一个平行坐标轴的矩形,只可以移动矩形,问矩形最多能包括多少价值和的点. 分析:        本题首先要转换一下,我们用矩形的中心点来描述这个矩形,然后对于每个星星,我们建立一个矩形中心的活动范

code 1130

poj 2482 Stars in Your Window 线段树 扫描线

题目 题目链接:http://poj.org/problem?id=2482 题目来源:某人的线段树合集。 简要题意:天空中有些星星,它们有亮度,你拿个框来框星星,求框里星星亮度之和最大多少。

ned_chu的博客 584
上一篇: CDOJ 1086 邱老师降临小行星 记忆化搜索
下一篇: CDOJ 1039 Fabricate equation
sky-edge
博客等级 码龄12年 20粉丝 191原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值