FZU 1893 内存管理 模拟
比赛的时候队友要做这道题……
他没做出来自己也被误导了……
也算是个教训 自己还是要有自己的思路……
又是模拟题……
网上都是用vector做的 我最近才会stl 怎么会用那么高大上的的东西……
强力模拟一波内存……
反正只有100的大小 随意遍历……
模拟都做不出来 只能说明真的方了……
只要心态稳定 模拟都是水题……
#include<stdio.h>
#include<string.h>
int memory[];
int room[];
int main(){
int T;
scanf("%d",&T);
while(T--){
char s[];
int used=;
int point=;
while(~scanf("%s",s)&&strcmp(s,"End")!=){
if(strcmp(s,"Create")==){
int number;
scanf("%d",&number);
scanf("%d",&memory[number]);
int emp=;
int ok=;
for(int i=;i<=&&ok;i++){
if(!room[i]) emp++;
if(emp>=memory[number]){
int ii=i;
while(room[ii]==){
room[ii]=number;
ii--;
}
ok=;
printf("Create process %d of size %d successfully!\n",number,memory[number]);
}
else if(room[i+]!=&&ok) emp=;
}
if(ok){
memory[number]=;
printf("No enough memory!\n");
}
}
if(strcmp(s,"Delete")==){
int n;
scanf("%d",&n);
if(memory[n]==) printf("No such process!\n");
else{
printf("Delete process %d of size %d successfully!\n",n,memory[n]);
used-=memory[n];
memory[n]=;
for(int i=;i<=;i++)
if(room[i]==n) room[i]=;
}
}
if(strcmp(s,"Print")==){
int emp=;
int full=;
for(int i=;i<=;i++){
if(!room[i]) emp++;
else{
if(emp){
printf("H %d\n",emp);
emp=;
}
while(room[i++]&&room[i]==room[i-]) full++;
printf("P %d %d\n",room[--i],full+);
full=;
}
}
if(emp) printf("H %d\n",emp);
}
}
memset(room,,sizeof(room));
memset(memory,,sizeof(memory));
}
return ;
}
FZU 1893 内存管理 模拟的更多相关文章
- (原创)动态内存管理练习 C++ std::vector<int> 模拟实现
今天看了primer C++的 “动态内存管理类”章节,里面的例子是模拟实现std::vector<std::string>的功能. 照抄之后发现编译不通过,有个库函数调用错误,就参考着自 ...
- Java内存管理的进一步理解-模拟过程图解
Java内存管理的进一步理解-模拟过程图解--转载 java的内存管理分为: 1.堆内存:2.栈内存:3.方法区:4.本地方法区 /* 1:方法区 方法区存放装载的类数据信息包括: ...
- C++ 系列:内存管理
1.内存分配方式 内存分配方式有三种: (1)从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量,static变量. (2)在栈上创建. 在执行函 ...
- .NET面试题解析(06)-GC与内存管理
系列文章目录地址: .NET面试题解析(00)-开篇来谈谈面试 & 系列文章索引 GC作为.NET的重要核心基础,是必须要了解的.本文主要侧重于GC内存管理中的一些关键点,如要要全面深入了 ...
- C语言内存管理(转)
伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆.如果 ...
- 转:C/C++内存管理详解 堆 栈
http://chenqx.github.io/2014/09/25/Cpp-Memory-Management/ 内存管理是C++最令人切齿痛恨的问题,也是C++最有争议的问题,C++高手从中获得了 ...
- 程序员必读:Linux内存管理剖析
现在的服务器大部分都是运行在Linux上面的,所以作为一个程序员有必要简单地了解一下系统是如何运行的. 对于内存部分需要知道: 地址映射 内存管理的方式 缺页异常 先来看一些基本的知识,在进程看来,内 ...
- MongoDB源码概述——内存管理和存储引擎
原文地址:http://creator.cnblogs.com/ 数据存储: 之前在介绍Journal的时候有说到为什么MongoDB会先把数据放入内存,而不是直接持久化到数据库存储文件,这与Mong ...
- Cocos2d-x内存管理研究<二>
http://hi.baidu.com/tzkt623/item/46a26805adf7e938a3332a04 上一篇我们讲了内核是如何将指针加入管理类进行管理.这次我将分析一下内核是如何自动 ...
随机推荐
- Java learning notes (1):Basic Knowlege points
Basic Knowlege points: 1: it's necessary that there is only one public class in per .java file 2: .j ...
- CentOS 6.5 部署Unison双向同步服务
环境介绍: 服务器 IP Server1 192.168.30.131 Server2 192.168.30.132 1.添加主机互信: a.添加host文件(在Server1.Serve ...
- Android使用 startActivityForResult 、 onActivityResult 时的注意事项
今天使用 startActivityForResult 时遇到两个问题,应该是常见问题了吧,浪费了些时间才搞定,做个记录. 1. onActivityResult 的触发顺序问题 这个问题很郁闷,我一 ...
- hdu1036
#include<stdio.h>int main(){ int n; double d; int num; char h,m1,m2,s1,s2; scanf("%d" ...
- Java 并发 线程的生命周期
Java 并发 线程的生命周期 @author ixenos 线程的生命周期 线程状态: a) New 新建 b) Runnable 可运行 c) Running 运行 (调用 ...
- sqlserver 更改跟踪相关知识
数据捕获相关文章: http://www.cnblogs.com/lyhabc/p/3383484.html http://www.cnblogs.com/chenmh/p/4408825.html ...
- git clone出现SSL错误
在学习git的时候,发现不能使用git clone从github.com下载,报了个ssl错误. Cloning into cancan... error: SSL certificate probl ...
- java 枚举类型和数据二进制等问题思考
.以下代码的输出结果是什么? int X=100; int Y=200; System.out.println("X+Y="+X+Y); System.out.println(X+ ...
- XAMPP 的MYSQL无法启动
最近在学习小程序,小程序的后台cms系统需要安装XAMPP软件,这个软件是个集成软件,里面有MySql 和 Apache 等 ,首先进入小程序后台时需要启动MySql 和 Apache Apache ...
- openstack添加数据库
输入:neutron-db-manage revision -m "表的名称" neutron-db-manage upgrade head 如果遇到版本名找不到的情 ...