zoukankan      html  css  js  c++  java
  • hihoCoder挑战赛1 毁灭者问题

    题目链接:http://hihocoder.com/problemset/problem/1034

    数据结构题,由于每个魔法单位有着不同的回复速度和上限,所以不能根据吸收时间点进行查询和更新。但是如果知道每个人在哪些时间点被吸收了,那么可以按照每个单位的情况更新,具体操作是:时间间隔超过Mi/Ri的则被吸收的值为Mi(设这样的间隔有x个),否则为Ri*时间间隔(设这样的间隔总时间长度为y),此魔法单位被吸收的总量为x*Mi+y*Ri。

    如何快速求每个单位在哪些时间被吸收:维护一个有序序列记录时间点,假设当前单位为i,在某个时间t1有一个以i-1为结束的吸收区间,那么在有序序列中删除t1,在某个时间t2有一个以i为开始的吸收区间,那么在有序序列中插入t2。做完以上的处理,有序序列中记录的时间点即为所求。这个序列用set就能维护。

    如何快速求上面提到的间隔数x和间隔总时长y:维护一个线段树,线段树的每个节点代表一个时间间隔,间隔按升序排列,线段树维护两个区间和,一个是个数和一个是时长和。时间点序列中的插入操作相当于加入了两个

  • 相关阅读:
    兼容ie10及以上css3加载进度动画
    MySQL的安装
    VSFTPD+MYSQL+PAM
    58.省市联动-json
    省市联动
    56.检验特殊字符
    55.全选2
    54.截取字符串的思想实现输入框字数限制
    网络截取文件名
    lastPathComponent的功能
  • 原文地址:https://www.cnblogs.com/mcflurry/p/5091131.html
Copyright © 2011-2022 走看看