BUPT复试专题—内存分配(2014-2)
题目描述
在操作系统中,内存分配是非常重要的工作。
己知内存空间由N个内存块组成,这些内存块从1到N编号。
进行内存分配时,操作系统将选择一块大小足够的内存全部分配给请求内存的进程。例如,当进程请求10MB的内存时,操作系统必须向该进程分配一个不小于 10MB的内存块。内存块不能重复分配。
操作系统有三种基本的分配方式,分别为:
•首次适应:从1号到N号内存块依次査找,直到找到第一块足够大的且未分配出去的内存块,将其分配给进程。
•最佳适应:找到当前未分配出去且大小足够的内存块中最小的内存块分配给进程。
•最差适应:找到当前未分配出去且大小足够的内存块中最大的内存块分配给进程。
其中,最佳适应方式是应用最为广泛。现在,操作系统要依次处理M个进程的内存请求,请按照最佳适应方式分配内存,并输出相应的内存块的大小。如果,没有大小足够的内存块可以满足当前请求,则输出”NULL"(不包含引号〕,并跳过该请求。
输入
每组数据由4行构成:
第一行为一个整数N(1~100),表示有N个内存块
第二行有N个整数,第i个整数表示第i块内存块的大小
第三行为一个整数M (1 ~ 100),表示有M个请求
第四行有M个整数,表示进程所请求的内存空间。
输出
如果没有讨用内存块,输出”NULL"(不包含引号〕
不要输出多余的行尾空格。
样例输入
2
4
7 5 10 3
2
4 6
4
3 5 9 10
3
5 12 6
样例输出
5 7
5 NULL 9
来源
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
using namespace std;
int sort(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int T;
cin>>T;
while(T--)
{
int number,i=,donser[],ask,what;
cin>>number;
while(i<number)
{
cin>>donser[i];
i++;
}
qsort(donser,number,sizeof(int),sort);
cin>>ask;i=;
while(i<ask)
{
cin>>what;
int lable=;
for(int j=;j<number;j++)
{
if(donser[j]>=what)
{
if(i!=ask-)
cout<<donser[j]<<" ";
if(i==ask-)
cout<<donser[j]<<endl;
donser[j]=;
qsort(donser,number,sizeof(int),sort);
lable=;
break;
}
}
if(lable==)
{
if(i!=ask-)
cout<<"NULL"<<" ";
if(i==ask-)
cout<<"NULL"<<endl;
}
i++;
}
}
return ;
}
BUPT复试专题—内存分配(2014-2)的更多相关文章
- BUPT复试专题—数据库检索(2014软院)
题目描述 在数据库的操作过程中,我们进场会遇到检索操作.这个题目的任务是完成一些特定格式的检索,并输出符合条件的数据库中的所有结果. 我们现在有一个数据库,维护了学生的姓名(Name),性别(Sex) ...
- BUPT复试专题—奇偶求和(2014软件)
题目描述 给出N个数,求出这N个数,奇数的和以及偶数的和. 输入 第一行为测试数据的组数T(1<=T<=50).请注意,任意两组测试数据之间是相互独立的. 每组数据包括两行: 第一行为一个 ...
- BUPT复试专题—网络传输(2014网研)
题目描述 网络的高效互联与智能传输是提升海量用户服务请求映射效率的重要措施.在这个任务中,你需耍在最小的传输时间内,将数据源传输到指定的网络节点中.我们给定的网络一共包含N个节点,其中节点1为数据源. ...
- BUPT复试专题—进程管理(2014网研)
题目描述 在操作系统中,进程管理是非常重要的工作.每个进程都有唯一的进程标识PID.每个进程都可以启动子进程,此时我们称该它本身是其子进程的父进程.除PID为0的进程之外,每个进程冇且只冇一个父进程. ...
- BUPT复试专题—分数加法(2014网研)
题目描述 求2^-a + 2^-b,其中a和b均为正整数,结果用最简分数表示 输入 第一行为测试数据的组数T (1~400).请注意,任意两组测试数据之间相互独立的.每组测试数据一行,包含两个整数a和 ...
- BUPT复试专题—Python List(2014)
题目描述 在Python中,List (列表)是一种非常重要的数据结构.它与C/C++/Java中的 数组有些类似,但支持添加新元素时的动态扩展.在这个问题中,你需要处理如下 的几种对List的操作. ...
- BUPT复试专题—最近公共祖先(2014软院)
题目描述 给出一棵有N个节点的有根树TREE(根的编号为1),对于每组查询,请输出树上节点u和v的最近公共祖先. 最近公共祖先:对于有向树TREE的两个结点u,v.最近公共祖先LCA(TREE u,v ...
- BUPT复试专题—最长连续等差子数列(2014软院)
题目描述 给定-个长度为N的整数数列,你需要在其中找到最长的连续子数列的长度, 并满足这个子数列是等差的.注意公差小于或等于0的情况也是允许的. 输入 第一行为数据组数T(1~100),表示测试数 ...
- BUPT复试专题—网络的核(2014)
题目描述 给定一个无向网络G,共有N个节点(1到N),M条边,求网络的核. 网络的核:到网络中其他节点距离之和最小的节点,且对于不连通的两点,他们之间的距离为N,若有多组解,输出编号最小的节点 输入 ...
随机推荐
- mysql基本优化
文件打开数 show status like "%Open_files%" Open_files 133 show VARIABLES like "%open_files ...
- docker系列之安装配置
由于docker支持内核3.8以上的,所以我们要安装centos7系统,这个系统的内核是3.10,来支持docker使用环境 一.用UItralSo制作u盘启动 打开找到要做u盘启动的镜像 二.安装C ...
- RabbitMQ 初体验
概述 RabbitMQ是一款消息队列中间件.他提供了几乎覆盖所有语言的SDK与文档,简直强大的不的了.要详细的去了解学习RabbitMQ,我建议还是看官方文档吧.http://www.rabbitmq ...
- 【ORACLE】调整序列的当前种子值
[ORACLE]调整序列的当前种子值 --必须用SYS用户执行脚本:或具有SYSDBA角色登录: CREATE OR replace ); v_step ):;--步进 tsql ); BEGIN E ...
- Oracle中创建触发器示例及注意事项
1.oracle 中创建触发器示例 CREATE TABLE "CONCEPT"."FREQUENCYMODIFYLOG" ( "FREQUENCYI ...
- C#显示及隐藏任务栏
private const int SW_HIDE = 0; //隐藏任务栏 private const int SW_RESTORE = 9;//显示任务栏 [DllImport("use ...
- pytorch中设定使用指定的GPU
转自:http://www.cnblogs.com/darkknightzh/p/6836568.html PyTorch默认使用从0开始的GPU,如果GPU0正在运行程序,需要指定其他GPU. 有如 ...
- MHA的介绍和测试(一)
MHA的介绍 MySQL的MHA:MySQL的高级可用性管理器和工具MHA的主要目标是在短(通常为10-30秒)的停机时间内自动化主故障转移和slave升级,不受复制一致性问题的困扰,不需要花费大量的 ...
- 【bzoj4237】稻草人 分治+单调栈+二分
题目描述 JOI村有一片荒地,上面竖着N个稻草人,村民们每年多次在稻草人们的周围举行祭典. 有一次,JOI村的村长听到了稻草人们的启示,计划在荒地中开垦一片田地.和启示中的一样,田地需要满足以下条件: ...
- 【Luogu】P1462通往奥格瑞玛的道路(二分答案+SPFA)
题目链接 导致我WA十几遍的原因居然是最大值不够大……以后再也不相信memset(dis,127/3,sizeof(dis))了. 此题先将花费排序,然后二分最大花费,spfa判断解是否可行.spfa ...