这篇文章介绍了NOI1999内存分配问题。题目有N个内存单元,1≤10^4个进程,每个进程有三个整数T,M,P,分别表示申请内存的时刻、长度和占用内存的时间,数据已按T从小到大排序。进程的T,M,P<10^9。进程申请内存时,如果当前存在长度为M的空内存,就分配给它,否则放入等待队列。输出全部进程运行完毕的时刻和被放入过等待队列的进程总数。题目中有两种操作:分配内存操作和释放内存操作。我们可以使用一个std::set来维护内存,使用一个堆(std::priority_queue)来维护内存释放的信息。需要写一个函数void release(int t),代表释放时刻≤T时应该释放的内存。在main函数中,需要注意插入内存边界等待所有内存分配请求处理完之后,应该把所有进程运行结束。