Problem Address:http://poj.org/problem?id=2352
【前言】
昨天做了一道二维的,今天转转一维的。
这道题是很简单的树状数组,只是理解起来可能会有点别扭。
【思路】
树状数组“修改一个节点,查询一个区域”。
数据是以Y升序输入的。
树状数组下标为X,Sum[x]表示小于等于X的星星总数。由于Y是升序输入的,所以在当前情况下没有比此时输入的Y再大的Y,对于任意X,此时的Y都是最大的,所以可以直接取出进行计算。
计算出数目后把相应的level加一,并更新X节点。
更新和计算总和,参考:http://blog.csdn.net/Human_CK/archive/2011/06/12/6539722.aspx
这道题是更新节点查询节点的一维树状数组,如果是更新节点查询区域,则需要根据容斥原理进行计算,具体的在上面的链接里已经写了。
【代码】