• 树形数组——摘星星伪题解


      树形数组。

      题目:摘星星

      描述:宇航员经常检测星图,在星图上,星星由点表示而且每颗星星都有笛卡尔坐标。星星的等级表示左下方星星的数量。宇航员想知道星星等级的分布。
    ::点击图片在新窗口中打开::
    例如,如上面图形所示,第5号星等级是3 (它由三个标记为1,2和4的星组成)。标记着2和4的星星的等级是1,在此地图上,0等级的星星只有一个,1等级的有两个,2等级的有一个,3等级的有一个。
    你设计一个程序,在给定地图上计算出每个等级星星的数量。
    输入:
    输入文件“INPUT.TXT”的第一行包含N个星星(1<=N<=60000), 接下来的N行描绘星星的坐标(每行中有两个整数X和Y,由空格分开, 0<=X,Y<=32000)。 在图上的一点只能存在一颗星星,星星根据Y坐标的递增顺序排列,Y坐标相同的星星根据X坐标的递增顺序排列。
    输出:
    输出文件“OUTPUT.TXT”应包含N 行,一行一个数字,第一行包含0等级星星的数量,第二行包含1等级星星的数量,等等,最后一行包含N-1等级星星的数量。
    输入输出示例:
    INPUT.TXT           OUTPUT.TXT
    5                    1
    1 1                  2
    5 1                  1
    7 1                  1
    3 3                  0
    5 5

    部分解析:此题用树形数组解决,按照x大小排序,然后进行处理。

    实际实现:开两个数组,先按照x大小排序,再按照y大小排序。然后再按照x大小依次处理,向前寻找第一个y坐标比当前点小的点(称为目标点),记录下来横坐标和位置,然后向前(后)寻找相同横坐标的点,更新最大的等级数。其中,数组的预处理略过。然后再向前(后)寻与找当前点横坐标相同的点,当纵坐标小于等于当前点的时候,inc(当前点等级数)。最后进行补充,判断是否之前有一些点,在目标点的纵坐标之上,即有可能忽略掉的点,以此类推,更新完一个节点后,反复进行此上操作。(跟树形数组好像没太大关系)但是时间复杂度很高,5T,而且不知为什么前五个点W掉了…… …… ……回头再出正版题解……

    <Marvolo原创,严禁转载>

  • 相关阅读:
    modis数据处理的坑(MOD02,mod03,mod04,MCD19A2)
    TensorFlow安装笔记(CPU版)
    mod35云掩膜产品用法
    ERA-Interim数据学习
    收集空气质量数据走的路
    GEE windows 环境配置
    Spatiotemporal continuous estimates of PM2.5 concentrations in China, 2000–2016: A machine learning method with inputs from satellites, chemical transport model, and ground observations
    Exploiting ConvNet Diversity for Flooding Identification
    Missing Data Reconstruction in Remote Sensing Image With a Unified Spatial–Temporal–Spectral Deep Convolutional Neural Network(缺失数据补全,时空谱网络)
    多线程
  • 原文地址:https://www.cnblogs.com/zhtjtcz/p/4984785.html
Copyright © 2020-2023  润新知