已經第二次出現這種opt模擬的題目了,時間被卡到懷疑人生
第一次出現時統計置換次數
第二次出現是新增部分條件:同時存在最大值時按頁面大的刪除,最後輸出操作結束後的結果,按照最原始的順序輸出。
貼上**。
#includeusing namespace std;
#define inf 0x3f3f3f
struct node;
node(int pos,int x);
bool friend operator < (node xx,node yy)
int thispos,maxsize=0;
//節點儲存的是下乙個出現的位置,和這個數x
//每次查詢之後,如果存在那麼直接刪除,再插入新節點更新這個數的下乙個位置
//如果不存在,則需要從快取中刪除,直接刪除集合最後的節點(因為本身就是按照要求排序的)
//每次找出刪除節點的快取中位置,更新該位置的值
//更新這個數在快取中的第幾個位置
for(int i=1;i<=a;i++)
else
else
}s.insert(node(nextpos[i],num[i]));
ans[thispos]=num[i];
numtopos[num[i]]=thispos;
maxsize=max(maxsize,thispos);
}for(int i=0;i<=maxsize;i++)
printf("\n");
}return 0;
}
頁面置換演算法之 OPT演算法
最佳置換演算法是由belady於1966年提出的一種理論上的演算法。其所選擇的被淘汰頁面,將是以後永不使用的,或許是在最長 未來 時間內不再被訪問的頁面。採用最佳置換演算法,通常可保證獲得最低的缺頁率。從 主存 中移出永遠不再需要的頁面 如無這樣的頁面存在,則選擇最長時間不需要訪問的頁面。這樣可以保...
演算法訓練 反置數
問題描述 乙個整數的 反置數 指的是把該整數的每一位數字的順序顛倒過來所得到的另乙個整數。如果乙個整數的末尾是以0結尾,那麼在它的反置數當中,這些0就被省略掉了。比如說,1245的反置數是5421,而1200的反置數是21。請編寫乙個程式,輸入兩個整數,然後計算這兩個整數的反置數之和sum,然後再把...
佇列元素逆置演算法
1.題目 使用乙個棧 乙個佇列,實現佇列中元素逆置的演算法 2.利用佇列先進先出,棧先進後出的特性,實現佇列元素的逆置 3.原始碼 1.題目 使用乙個棧 乙個佇列,實現佇列中元素逆置的演算法 include define maxsize 1000 typedef structqueue typede...