传送门

•题意

  有 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

HDU 2871"Memory Control"(线段树区间和并+set.lower_bound)的更多相关文章

  1. hdu 2871 Memory Control(线段树)

    题目链接:hdu 2871 Memory Control 题目大意:模拟一个内存分配机制. Reset:重置,释放全部空间 New x:申请内存为x的空间,输出左地址 Free x:释放地址x所在的内 ...

  2. hdu 2871 Memory Control(伸展树splay tree)

    hdu 2871 Memory Control 题意:就是对一个区间的四种操作,NEW x,占据最左边的连续的x个单元,Free x 把x单元所占的连续区间清空 , Get x 把第x次占据的区间输出 ...

  3. hdu 1540 Tunnel Warfare(线段树区间统计)

    Tunnel Warfare Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  4. HDU 6638 - Snowy Smile 线段树区间合并+暴力枚举

    HDU 6638 - Snowy Smile 题意 给你\(n\)个点的坐标\((x,\ y)\)和对应的权值\(w\),让你找到一个矩形,使这个矩阵里面点的权值总和最大. 思路 先离散化纵坐标\(y ...

  5. HDU 2871 Memory Control

    一共4种操作 其中用线段树 区间合并,来维护连续空的长度,和找出那个位置.其他用vector维护即可 #include<cstring> #include<cstdio> #i ...

  6. hdu 2871 Memory Control (区间合并 连续段的起始位置 点所属段的左右端点)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=2871 题意: 四种操作: 1.Reset  清空所有内存2.New x  分配一个大小为x的内存块返回,返 ...

  7. HDU 3577 Fast Arrangement (线段树区间更新)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3577 题意不好理解,给你数字k表示这里车最多同时坐k个人,然后有q个询问,每个询问是每个人的上车和下车 ...

  8. hdu 3397 Sequence operation (线段树 区间合并 多重标记)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=3397 题意: 给你一串01串,有5种操作 0. 区间全部变为0 1.区间全部变为1 2.区间异或 3.询问 ...

  9. hdu 1698+poj 3468 (线段树 区间更新)

    http://acm.hdu.edu.cn/showproblem.php?pid=1698 这个题意翻译起来有点猥琐啊,还是和谐一点吧 和涂颜色差不多,区间初始都为1,然后操作都是将x到y改为z,注 ...

  10. HDU 5861 Road(线段树 区间修改 单点查询)

    Road Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submi ...

随机推荐

  1. element-ui表格列金额显示两位小数

    对于金额的显示,大多情况下需要保留两位小数,比如下面的(表格采用 element-ui): 在vue.js中,对文本的处理通常是通过设置一系列的过滤器,过滤器可以用在两个地方:双花括号插值 和 v-b ...

  2. oracle误操作commit之后,可以闪回数据

    1. 授予行迁移权限 alter table table_name enable row movement; 2. 到15分钟前: flashback table order   to timesta ...

  3. V8引擎实现标准ECMA-262(三)

    推荐英文原址ECMA-262 3.构造函数 构造函数除了通过指定的模式创建对象以外,还有另外一个好处--它能够自动设置新创建对象的原型对象,这个原型对象存储在构造函数的Prototype属性中. 例如 ...

  4. 大数据技术之Hadoop入门

      第1章 大数据概论 1.1 大数据概念 大数据概念如图2-1 所示. 图2-1 大数据概念 1.2 大数据特点(4V) 大数据特点如图2-2,2-3,2-4,2-5所示 图2-2 大数据特点之大量 ...

  5. appium处理混合APP_获取上下文(切换句柄)

    //混合APP的处理 //getContextHandles():获取所有可用的上下文//context():设置上下文//getContext():获取当前上下文 //1. getContext() ...

  6. txt改后缀弹窗表白

    one. 打开新建的文本文件,输入字符:msgbox("此处可替换成你想要出现的文字"),括号和引号是英文状态下的标点.(可根据自己的需要输入多行) two. 保存新建的文本文件, ...

  7. laravel 项目本地版本为5.5,线上mysql 为5.7.21版本,执行严格模式

    看到网上很多说修改 但是在mysql 5.7中没有这个参数设置,故放弃: 结合本项目sina_id 10位超过int的最大范围4294967295,所以报错,修改为bigint  即可.

  8. 洛谷 P2568 GCD(莫比乌斯反演)

    题意:$\sum_{i=1}^{n}\sum_{j=1}^{n}[gcd(i,j)\epsilon prime]$. 对于这类题一般就是枚举gcd,可得: =$\sum_{d\epsilon prim ...

  9. IMEI校验思路及代码

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. swap function & copy-and-swap idiom

    在C++中,众所周知在一个资源管理类(例如含有指向堆内存的指针)中需要重新定义拷贝构造函数.赋值运算符以及析构函数(Big Three),在新标准下还可能需要定义移动构造函数和移动赋值运算符(Big ...