假定天空是一个平面,每个星星都有一个坐标(x,y),每颗星星都有一个亮度C,代表它的亮度。窗户是长方形的,有固定的长和宽,边平行于x轴和y轴。你的任务是告诉我如何摆放窗户,才能获得在窗口内所有星星的亮度总和最大值。注意,边框的星星不算。窗口可以被平移,但不允许旋转。
输入
在输入中有几个测试用例。每一行的第一行包含3个整数:n,w,h,表示星形的数目,矩形窗口的水平长度和垂直高度。然后N行如下,有3个整数分别为:X,Y,C,表示星星位置(x,y)和每个恒星的亮度。没有两颗星星在同一点上。
天空中至少有1颗,最多有10000颗星星。1 = <W,h <= 1000000,0 =<x,y ,C< 2^31。
输出
一个整数窗口内所有星星的亮度总和最大值。
样例输入
3 5 4
1 2 3
2 3 2
5 3 1
样例输出
6
不得不说这次模拟赛三个题都是好题
题意简化一下坐标系上各个点权值不同,用一个固定大小的矩形框住总权值最大的多个点
这个题可以将每个星星的坐标当做矩形的右下角大小为窗户长宽各-1(不能在边上),矩形权值为星星权值,那么各个矩形在平面内相交时,产生的权值最大的点的权值即为答案
所以就用扫描线从下往上扫,每扫到一个位置先加入边再删出边,用一个线段树维护,则每次操作后,把当前线段树上最大的权值与总答案比较就可以了