zoukankan      html  css  js  c++  java
  • HDU 2871"Memory Control"(线段树区间和并+set.lower_bound)

    传送门

    •题意

      有 n 个内存单元(编号从1开始);

      给出 4 种操作:

        (1)Reset :表示把所有的内存清空,然后输出 "Reset Now"。

        (2)New x :表示申请一块长度为 x 的内存块(满足起始地址尽可能小);

              如果找到,输出 "New at A",A表示该内存块的起点,找不到,输出 "Reject New"。

        (3)Free x :表示把包含第 x 块单位内存的内存块清除;

              如果 x 在某内存块中,输出 "Free from A toB",A和B分别表示该内存块的起点和终点,找不到,输出 "Reject Free"。

        (4)"Get x",表示返回第 x 块内存块的起始内存单位编号;

              如果找到,输出 "Get at A",A 表示第 x 块内存块的起始地址,找不到,输出 "Reject Get"。

    •题解

      类似于这道题【POJ3667 Hotel】,找连续的 x 个空内存单元,并满足起始地址尽可能小;

      唯一不同的是此题需要记录找到的内存块的地址;

      根据操作(3)(4)的要求,我们可以用 set 存储地址块;

      对于 (3) 操作调用 set 中的 upper_bound() 函数判断是否有解以及解的位置;

      对于 (4) 操作,在 set 中暴力查找即可;

    •Code

      HDU2871.cpp

  • 相关阅读:
    expect script
    2011年11月28日,29日学习内容总结
    2011年11月27日学习内容总结
    Toad使用(转)
    2011年11月30日学习总结
    2011年11月24日学习内容总结
    2010年11月23日学习内容总结
    Toad Can't initialize OCI. Error 1解决办法
    2011年11月25日学习内容总结
    2011年12月1日学习内容总结
  • 原文地址:https://www.cnblogs.com/violet-acmer/p/11691263.html
Copyright © 2011-2022 走看看