2017 7 21 隊測 新型作業系統

2021-08-04 03:41:58 字數 1813 閱讀 3527

【題目描述】

小 m 需要一套管理系統,但是主流的作業系統都太臃腫。你需要幫小 m

開發一套支援以下操作的新作業系統:

1. 在某個程序內新增乙個執行緒

2. 刪除某個程序內的乙個執行緒

3. 詢問當前包含最多執行緒的程序號。若有多個,輸出任意乙個

初始時有 n 個不包含執行緒的程序,編號分別為 1~n。

【輸入檔案】

第一行兩個整數 n m

接下來 m 行,每行以乙個整數 p 開始:

若 p=1,則接下來乙個整數 k,表示在 k 號程序內新增乙個執行緒

若 p=2,則接下來乙個整數 k,表示刪除 k 號程序內的乙個執行緒

若 p=3,則代表詢問,你需要輸出當前包含最多執行緒的程序號

【輸出檔案】

每個詢問一行,每行包含乙個整數,代表此次詢問的答案

【樣例輸入】

2 5

1 1

3 1 2

1 2

3【樣例輸出】

1 2

【資料範圍】

30%的資料保證 n,m<=1000

90%的資料保證 n,m<=100000

100%的資料保證 n,m<=1000000 ; 刪除執行緒的時候一定有執行緒可刪

//90分 堆+優先佇列

#include

#include

#include

#include

#define maxn 1000000+10

using

namespace

std;

int n,m,p,k;

struct node

e[maxn];

priority_queueq;

bool

operator

< (node a,node b)

void do2()

void do3()

printf("%d\n",u.num);

//printf("%d\n",u.xc);

}int main()

while(m--)

return

0;}

//100 

#include

#include

#include

const

int max_n = 1000009;

typedef

int arr[max_n];

int n, m, i, k, op;

arr list, val, p, pos;

inline

void swap(int &a, int &b)

int main()

swap(list[pos[k]], list[p[val[k]]]);

swap(pos[k], pos[list[pos[k]]]);

++p[val[k]];

--val[k];

break;

case

3 : printf("%d\n", list[n]);

break;}/*

printf("-- ");

for (i=1; i<=n ;++i) printf("%d ", list[i]); puts("");*/}

}

作業系統 作業系統介面

介面表現為函式呼叫,由作業系統提供,連線作業系統和應用軟體。出於安全性考慮,應用程式不能直接在記憶體中任意訪問 將核心程式和使用者程式隔離 通過比較訪問資料段cpl和rpl的特權級和當前段dpl的特權級之間的關係 應用程式呼叫庫函式printf printf呼叫庫中的write函式 write將函式...

作業系統(作業系統引論)

方便性 方便使用者進行操作計算機 有效性提高系統資源的利用率 提高系統的吞吐量,加速程式的執行 可擴充性 方便地增添新的模組和功能,以及對原有的功能模組進行修改 開放性能夠遵循世界標準規範 os作為使用者和計算機硬體系統之間的介面 使用者能夠通過作業系統來使用計算機系統 os作為計算機資源的管理者 ...

作業系統 作業系統 一 作業系統概述

好好學習,天天向上本文已收錄至我的github倉庫daydayup 歡迎star 之前一直沒有系統地學過作業系統,感覺自己在平時的學習過程中對於某些概念理解得一塌糊塗,比如中斷 記憶體 程序和執行緒等。所以打算系統的學習一下作業系統。一開始我是在b站看哈工大的李治軍老師講的,但是一上來就開始從彙編 ...