題目描述
物聯網技術的蓬勃發展,各種感測器紛紛出現。小b所在的專案組正在開發乙個物聯網專案,她們在研究設計一種新的感測器。這種感測器有自己的基本處理單元,具有一定的自主性,能夠進行簡單的資料收集、處理、儲存和傳輸。為降低系統功耗並保證系統可靠性和可控性,他們要對記憶體進行基本的管理。研究小組計畫開發乙個實驗性記憶體管理器,實現對記憶體的分配、釋放和整理。對應的介面為new、del和def,使用語法為:
new size:分配size位元組大小的記憶體塊,返回該記憶體塊的控制代碼handle,size為正整數;
del handle:釋放控制代碼handle指向的記憶體塊;
def:整理記憶體碎片,將所有已分配記憶體塊按位址從低到高的順序遷移,使空閒記憶體碎片在高位址端拼接在一起;
初始記憶體為 initsize 位元組大小的整片空閒記憶體,編號為 1 到 initsize 。
new size操作中,若存在不小於size的連續空閒記憶體,則按照小位址優先的原則從空閒記憶體區域中分配size大小的記憶體塊,標記該記憶體塊狀態為已分配,並返回指向該記憶體塊的控制代碼。若無法分配,則返回空(null)。
del handle操作釋放由handle標記的記憶體塊,標記被釋放的記憶體狀態為空閒。若handle為無效控制代碼,則返回illegal_operation。
def 完成記憶體整理工作,無返回值。
根據設計,每次成功記憶體分配返回的控制代碼為乙個正整數,從1開始,依次計數。失敗的儲存分配操作不影響計數。
專案小組將此項任務分配給小b,小b向你求助,你能幫她嗎?
輸入輸入中有多組測試資料。每組測試資料的第一行為兩個正整數t和maxmem(1<=t<=10000, 1<=maxmem<=10000),其中t為操作次數,maxmem為初始記憶體大小,隨後有t行操作指令。
對每組測試資料,按操作順序輸出操作結果。對每個new操作,在單獨行中輸出結果,成功時輸出其返回控制代碼值,失敗則輸出null。若del操作失敗,輸出illegal_operation。def不產生輸出。
樣例輸入
6 10
new 5
new 3
del 1
new 6
defnew 6
樣例輸出12
null
3這種的資料不是很強,用模擬可以過,模組化一下,呼叫三個函式就好了,具體實現可以參考**
ac**:
#include #include #include # define f(i,m,n) for(int i=m; i<=n; i++)
# define mem(s) memset(s, 0, sizeof(s));
using namespace std;
struct node ;
int t, mmax, handle;
string ope;
vectorv;
int newfunc(int size)
else
} else
else
}if (mmax - v[len - 1].y >= size)
return -1;
} } }
void deffunc()
}int delfunc(int h)
} return -1;
}int main()
else printf("%d\n", flage);
}else if (ope == "del")
else
} }return 0;
}
奇虎360 2017春招真題
1.分金子 a b兩夥馬賊意外地在一片沙漠中發現了一處金礦,雙方都想獨佔金礦,但各自的實力都不足以吞下對方,經過談判後,雙方同意用乙個公平的方式來處理這片金礦。處理的規則如下 他們把整個金礦分成n段,由a b開始輪流從最左端或最右端佔據一段,直到分完為止。馬賊a想提前知道他們能分到多少金子,因此請你...
2017秋招真題 360
題目描述 寫入記憶體1到n之間的n個自然數,記憶體寫入只接受二進位制的形式,所以十進位制表達中除0和1之外的其他值都沒有成功寫入記憶體。所以有多少數字寫入了伺服器的記憶體!輸入輸入中有多組測試資料。每組測試資料在單獨的一行中,為整數n 1 n 109 109 樣例輸入 1020 輸出23 100 正...
JS刷秋招真題
嗶哩嗶哩2020校園招聘前端筆試卷 一 1.找出有序陣列 從小到大排列 中和為sum的兩個數,要求複雜度為o n 找到一組即可 求和輸入描述 第一行 陣列長度 第二行 陣列各項的值 第三行 sum 輸出描述 若存在,輸出和為sum的兩個數,以空格分隔 若不存在,輸出notfound 輸入例子1 51...