1. 程式人生 > 實用技巧 >北郵 python 問題 A: 頁面置換

北郵 python 問題 A: 頁面置換

題目描述

在瀏覽器進行頁面切換時,為了加速開啟之前開啟過的頁面,有一種常用的演算法,叫做LRU(Least Recently Used)演算法。
某裝置能夠記錄至多n
每次訪問頁面A時,如果頁面A不在被記錄的頁面中,就需要一定時間來載入這個頁面。

例如:

某裝置最多紀錄3個不同頁面,若頁面開啟順序先後依次為1,2,3,4,2,則開啟編號為4 的頁面時,編號為1 的頁面將被淘汰.第二次開啟編號為2的頁面時,並不會淘汰任何頁面。
若頁面開啟順序依次為1,2,3,1,4,在開啟編號為4的頁面時,最後一次訪問時間最早的是2號頁面,因此會在記錄中淘汰2號而記錄4號。
現有一個最多記錄n個不同頁面的裝置,並給出頁面(以數字編號)的訪問順序。

請輸出整個過程中共載入了多少次,以及在全部訪問結束後,裝置記錄了哪些頁面。
輸入
第一行輸入兩個整數n,m(1≤n,m≤500)
接下來一行輸入m個整數,描述頁面訪問順序,保證頁面編號是[1,m]內的正整數。
輸出
第一行輸出一個整數,表示載入的次數。
第二行輸出n個整數,用空格隔開,表示全部訪問結束後,裝置記錄的頁面編號(編號按照升序輸出)。資料保證訪問過的不同頁面總數大於等於n 。
注:輸出的每一行最後不要輸出多餘的空格,否則系統會判為格式錯誤。

樣例輸入 Copy

輸入樣例1

3 5
1 2 3 4 1

輸入樣例2

3 5
1 2 3 1 4

輸入樣例3

3 5
1 2 2 2 3

樣例輸出 Copy

輸出樣例1

5
1 3 4

輸出樣例2

4
1 3 4

輸出樣例3

3
1 2 3


思路

按照計網中報文的佇列實現即可


程式碼解析

在這裡插入圖片描述