【題目描述】
小 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站看哈工大的李治軍老師講的,但是一上來就開始從彙編 ...