HDU 6638 Snowy Smile(线段树求区间连续最大和)
题面
题意
平面坐标系有$n$个点,第$i$个点的坐标为$(x_i,y_i)$,每个点有个权值$w_i$,现在你需要寻找一个矩形把某些点圈起来使得他们的权值和最大。
思路
先把各点的纵坐标离散化,然后把所有的点按照横坐标从小到大排序,枚举矩形的左边界,每加入一个新的点,就把它对应纵坐标$y$的权值和$w[y]$更新并更改右边界,当左右边界都确定以后,利用线段树求得纵坐标的最大连续子段和,不断更新答案。复杂度$O(n^2log(n))$,注意每次枚举左边界都需要重新建树。
代码:
1 |
|