关键信息:有向带权、上三角、行为主序
就可以解决第一二小问
关键路径:最长
0 1 2 3 5,长度为16
一如既往的暴力
最简单的思路,合并取中位数
所以用数组就方便很多
当然,如果会归并用归并也可以,但是我不会(手动狗头)
还有一个关键点,这样可以节省很多时间,而且就算代码里面有一些逻辑运行不成功的,关系也不会很大,只要你的思路能让阅卷的看懂,就够了(所以不能像我一样不写注释,多少得写点)
个人力求10+,不求满分,这是取舍
int findMiddle(int a[], int b[], int n, int e) { // 两个数组,一个数表示数组长度,一个数返回中位数
int sum[2n] = [];
int temp = 0, i = 0, j = 0;
while(temp < 2n) {
if(i >= n) {
while(j < n) {
sum[temp] = b[j];
temp++;
j++;
}
break;
}
if(j >= n) {
while(i < n) {
sum[temp] = a[i];
temp++;
i++;
}
break;
}
if(a[i] < b[j]) {
sum[temp] = a[i];
temp++;
i++;
} else{
sum[temp] = a[j];
temp++;
j++;
}
}
e = sum[n/2 + 1];
return e;
}
时间复杂度O(n2),空间复杂度O(n)
关键信息:8位字长、8位寄存器、区分有符号数和无符号数,C语言是补码表示
这种题个人常用的方法就是先计算真值,不管是否溢出,先按人脑正常来算
容易错的是m、n的值,因为有符号数的最高位为符号位所以化成二进制跟无符号数的真值可能会不一样
x | y | m | n | z1 | z2 | k1 | k2 |
---|---|---|---|---|---|---|---|
134 | 246 | -122 | -10 | -112 | 380 | -112 | -132 |
然后就是求机器数
然后就可以解答问题了
这个题理想的分数为6-9,花费时间大概在20分钟(主要是计算要细心,一下子就错了)除了第三问可能不知道咋地回答,其他的内容并不难
对于存储器部分的知识,我只能说咸鱼学长无敌,根据他的梳理直接打通这类题的任督二脉
废话少说,开整
这个题比较综合,从虚拟存储器到Cache都考察了
心中要大概有个流程:
虚拟地址 => TLB/页表(慢) => 物理地址 => Cache/主存
虚拟空间16MB,24位,物理地址1MB,20位
页面大小4KB,占12位
=> 虚页号12位,实页号(页框号)8位
直接映射,8行,一块32B
基本地址结构:标记 | 行号 | 块内地址
=> 行号3位,块内5位,标记20-3-5=12位
分析完题目回来看问题,第一问、第二问答案都给出来了,分数也就来了
第三问虚拟地址001 C60H => 04 C60H
物理地址04C 60H,不命中
知识不牢固的话,到这里其实也满足了,起码已经有8分左右了,前四个题已经拿下30多分了(如果今年也这么考就好了/(ㄒoㄒ)/~~),选择题大概60分,这波100稳了
第四小问:
自己做的时候也错了
地址结构已经给出来了,那么把地址转成二进制
0000 0010 0100 1011 1010 1100
两组需要1位,标记12位,则需要分一位作为组号
高11位为标记,第12位为组号
标记:(0)000 0001 0010
组号:0
因此在主存中
暂无更好的解答
这个题感觉现在应该不会再这么考了,考选择题多点,虽然我解释不了原理,但是一眼能看出答案:
连续分配、集中存储
剩下的就自己编了,说说他们的优点应该就可以了
这个可能是大题里面最难的了,第一遍基本没看懂在说什么,最终得分4分(第二小问第一空、第三小问、第四小问(RTT、源IP地址))这也是计算机网络的难点所在,太凌乱了,没有层次感。只能靠多看了/(ㄒoㄒ)/~~
大题总分估计为42分