一、单项选择题
3. 以下不属于无线通信技术的是 (D)。
A. 蓝牙 B.WiFi C.GPRS D.以太网
Wrong answer: C
错因:没背熟
4. 以下不是 CPU 生产厂商的是 (C)。
A. Intel B. AMD C. Microsoft D. IBM
Wrong answer: D
错因:没背熟
8. 与二进制小数 0.1 相等的八进制数是 (B)。
A. 0.8 B. 0.4 C. 0.2 D. 0.1
Wrong answer: D
错因:看错题了
四、完善程序
…下面这道题我手打的
2. (郊游活动) 有 n 名同学参加学校组织的郊游活动,已知学校给这 n 名同学的郊游总经费为 A 元,与此同时第 i 位同学自己携带了 Mi 元。为了方便郊游,活动地点提供 B(>=n) 辆自行车供人租用,租用第 j 辆自行车的价格为Cj 元,每位同学可以使用自己携带的钱或者学校的郊游经费,为了方便账务管理,每位同学只能为自己租用自行车,且不会借钱给他人,他们想知道最多有多少位同学能够租用到自行车。 (第四、五空 2.5 分,其余 3 分)
本体采用二分法。对于区间[l, r],我们取中间点 mid 并判断租用到自行车的人数能否达到mid,判断的过程是利用贪心算法实现的。
程序:
#include <iostream>
using namespace std;
#define MAXN 1000000
int n, B, A, M[MAXN], C[MAXN], l, r, ans, mid;
bool check(int nn) { int
count = 0, i, j;
i = ①;
j = 1;
while (i <= n) {
if ( ② )
count += C[j] - M[i];
i++;
j++;
}
return ③;
}
void sort(int a[], int l, int r) {
int i = l, j = r, x = a[(l + r) / 2], y; while (i <= j) {
while (a[i] < x) i++; while (a[j] > x) j--; if (i <=
j) {
y = a[i]; a[i] = a[j]; a[j] = y; i++; j--;
}
}
if (j < r) sort(a, i, r); if (l < j) sort(a, l, j);
}
int main() { int i;
cin >> n >> B >> A;
for (i = 1; i <= n; i++) cin >> M[i];
for (i = 1; i <= B; i++) cin >> C[i];
sort(M, 1, n); sort(C, 1, B); l = 0;
r = n;
while (l <= r) {
mid = (l + r) / 2;
if ( ④ ) {
ans = mid;
l = mid + 1;
} else
r = ⑤;
}
cout << ans << endl; return 0;
}
(1) n-nn+1
Wrong answer: nn
错因:没看懂
(2) M[i]<C[i]
Wrong answer: /
错因:没看懂
(4) check(mid)
Wrong answer: !check(l)
错因:改错了
(5) mid-1
Wrong answer: mid
错因:没看懂