社区讨论
站外题求解,直接发完整代码谢谢
灌水区参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @lyy582m8
- 此快照首次捕获于
- 2024/07/23 16:17 2 年前
- 此快照最后确认于
- 2024/07/23 16:59 2 年前
置换(displace)
【题目描述】
有
?
n 个页面
?
1
a
1
到
?
?
a
n
,需要按从小到大的顺序进行访问。最开始这些页面处于硬盘中,为了提高访问速度,需要将它们放入位于内存中的页表,再进行页面的访问。页表的大小为
?
m,表示最多容纳
?
m 个页面,当下一个需要访问的页面不在页表之中时,会产生两种情况:
页表未满,将该页加入页表。
页表已满,需要从中选择其中一个页面,并将其置换掉。
那么如何去选择这样的页面呢?
你需要实现这样一个算法:将当前页表中 在将来 最久未使用的页面替换掉,若多个页面同时满足条件,则替换最早进入页表的页面。
请输出被替换掉的页面个数。
【输入格式】
从文件 displace.in 中读取数据
第一行包含两个正整数
?
,
?
n,m,分别表示页面大小,页表大小。
第二行包含
?
n 个由空格分隔的正整数
?
1
,
?
2
,
…
,
?
?
a
1
,a
2
,…,a
n
,表示页面走向。
【输出格式】
输出到文件 displace.out 中
输出一行包含一个整数表示被替换掉的页面个数。
【输入样例 1】
7 3
1 4 5 1 4 9 1
【输出样例 1】
1
【输入样例 2】
9 2
1 2 3 2 3 1 2 3 1
【输出样例 2】
3
【数据范围与约定】
对于
30
%
30% 的数据,有
?
≤
100
n≤100。
对于
60
%
60% 的数据,有
?
≤
1
0
3
n≤10
3
,
1
≤
?
≤
100
1≤m≤100。
对于
100
%
100% 的数据,有
5
≤
?
≤
1
0
5
5≤n≤10
5
,
1
≤
?
≤
1000
1≤m≤1000,
1
≤
?
?
≤
?
1≤a
i
≤n。
【样例解释】
样例解释 1
页表中的页面变化如下所示:
1
1 4
1 4 5
1 4 5
1 4 5
1 9 5 (4和5同时满足条件,4最先进入)
1 9 5
样例解释 2
页表中的页面变化如下所示:
1
1 2
3 2 (1比2在将来更晚使用)
3 2
3 2
1 2 (3比2在将来更晚使用)
1 2
1 3 (2之后都不会再被使用)
1 3
回复
共 3 条回复,欢迎继续交流。
正在加载回复...