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,若有多组解,输出编号最小的节点 输入 ...
随机推荐
- element使用心得
Table Table 常用属性解释 数据过滤,filter过滤器 <el-table-column width="200" show-overflow-tooltip la ...
- 一次下载多个文件的解决思路-JS
一次下载多个文件的解决思路(iframe) - Eric 真实经历 最近开发项目需要做文件下载,想想挺简单的,之前也做过,后台提供下载接口,前端使用window.location.href就行了呗.不 ...
- Codeforces Round #877 (Div. 2) D. Olya and Energy Drinks
题目链接:http://codeforces.com/contest/877/problem/D D. Olya and Energy Drinks time limit per test2 seco ...
- mysql远程访问另一台主机数据库表,实现小表广播功能
1.打开navicat,打开任意一个连接,新建一个查询,输入命令 show engines,出现如下界面 2. 如果FEDERATED对应的Support值为NO,则找到C:\ProgramData\ ...
- CEO的智力财富第12期-《股权激励》学习笔记
卷首语---你现在走的第一步,都藏着你未来的样子 今天,又去参加天使岛举办的系列讲座之股权激励,由律大大律师事务所李刚律师主讲,走在路上,我就在想,我为什么要来参加这样的活动呢?我的本职工作和股权没有 ...
- Codeforces Round #361 (Div. 2)——B. Mike and Shortcuts(BFS+小坑)
B. Mike and Shortcuts time limit per test 3 seconds memory limit per test 256 megabytes input standa ...
- HDU 5833 Zhu and 772002 ——线性基
[题目分析] 这题貌似在UVA上做过,高精度高斯消元. 练习赛T2,然后突然脑洞出来一个用Bitset的方法. 发现代码只需要30多行就A掉了 Bitset大法好 [代码] #include < ...
- SPOJ GSS3 Can you answer these queries III ——线段树
[题目分析] GSS1的基础上增加修改操作. 同理线段树即可,多写一个函数就好了. [代码] #include <cstdio> #include <cstring> #inc ...
- [BZOJ4992] [Usaco2017 Feb]Why Did the Cow Cross the Road(spfa)
传送门 把每个点和曼哈顿距离距离它3步或1步的点连一条边,边权为3 * t + a[x][y] 因为,走3步,有可能是3步,也有可能是1步(其中一步拐了回来) 最后,把终点和曼哈顿距离距离它1步和2布 ...
- oracle 当中,(+)是什么意思
SELECT A.id, B.IDDFROM A, BWHERE A.id(+)=B.IDD等价于SELECT A.id, B.IDDFROM A RIGHT OUTER JOIN B ON ( A. ...