我又来口胡+毒奶初赛题目了
17年感觉题目文字都有点多,而且最大的感受就是我已经不怎么会算数了,毕竟这么久一直都是在用电脑。。。
2017:
居然非常手贱地把图灵奖选成了奥斯卡。。。我可能需要剁手谢罪。。。
- 分辨率为 1600x900、16 位色的位图,存储图像信息所需的空间为( )。
A. 2812.5KB
B. 4218.75KB
C. 4320KB
D. 2880KB
正确答案: A
16位色,也就是说一个像素的颜色用16位来存,8位一字节,换算成KB就是1600 * 900 * 16 / 8 / 1024,算就行了,不要忘记位和字节不是一个东西。
10.若 f[0] = 0, f[1] = 1, f[n + 1] = (f[n] + f[n - 1]) / 2,则随着 i 的增大,f[i]将接近于( )。
A. 1/21/2
B. 2/32/3
C. (√5 − 1)/2
D. 11
正确答案: B
直觉可以告诉我们应该直接选BBB,不然的话就解一下特征方程然后求一下极限即可。
12.在 n(n ≥ 3)枚硬币中有一枚质量不合格的硬币(质量过轻或质量过重),如果只有一架天平可以用来称重且称重的硬币数没有限制,下面是找出这枚不合格的硬币的算法。请把 a-c 三行代码补全到算法中。
a. A ← X ∪ Y
b. A ← Z
c. n ← |A|
算法 Coin(A, n):
1. k ← ⌊n/3⌋
2. 将 A 中硬币分成 X,Y,Z 三个集合,使得|X| = |Y| = k,|Z| = n - 2k
3. if W(X) ≠ W(Y) //W(X), W(Y)分别为 X 或 Y 的重量
4. then __________
5. else __________
6. ___
7. if n>2 then goto 1
8. if n=2 then 任取 A 中1枚硬币与拿走硬币比较,若不等,则它不合格; 若相等,则 A 中剩下的硬币不合格.
9. if n=1 then A 中硬币不合格
正确的填空顺序是( )。
A. b, c, a
B. c, b, a
C. c, a, b
D. a, b, c
正确答案: D
这天杀的排版,洛谷上面把c选项和下一行压在了一起看懵了我半天。
其实这个策略是挺显然的,如果X,Y重量不等,显然假硬币就在这两堆里面,否则就在Z里面,递归处理即可。
14.小明要去南美洲旅游,一共乘坐三趟航班才能到达目的地,其中第 1 个航班 准点的概率是 0.9,第 2 个航班准点的概率为 0.8, 第 3 个航班准点的概率为 0.9。如果存在第 i 个(i=1,2)航班晚点,第 i+1 个航班准点,则小明将赶不 上第 i+1 个航班,旅行失败;除了这种情况,其他情况下旅行都能成功。请 问小明此次旅行成功的概率是( )。
A. 0.5
B. 0.648
C. 0.72
D. 0.74
正确答案: D
正难则反,考虑小明旅行失败的概率,显然就是要么1晚点2准点3任意,要么就是1任意2晚点3准点,分别算一下即可。
19.以下是面向对象的高级语言的有( )。
A. 汇编语言
B. C++
C. Fortran
D. Java
正确答案: BD
Fortan是指Formula Translation,我只知道它世界上最早出现的高级语言翻译器,至少“最早”这一点是毋庸置疑的,我们知道C++是最早的面向对象的高级语言,于是可以排除C选项。
21.如右图所示,共有 13 个格子。对任何一个格子进行一 次操作,会使得它自己以及与它上下左右相邻的格子中 的数字改变(由 1 变 0,或由 0 变 1)。现在要使得所 有的格子中的数字都变为 0,至少需要_________次操作。
正确答案: 3
高斯消元解一下异或方程组然后利用人类智慧来搞,当然运气好的话可能可以一眼看出来该按哪三个。
22.如下图所示,A 到 B 是连通的。假设删除一条细的边的代价是 1,删除一条粗的边的代价是 2,要让 A、B 不连通,最小代价是(________)(2 分),最小代价的不同方案数是(_______)(3 分)。(只要有一条删除的边不同,就 是不同的方案)
正确答案: 4
正确答案: 9
如果你能够人脑跑最大流也行,但是方案数就不太好统计了。
平面图最小割转对偶图最短路,把最短路DAG画出来统计一下路径个数就行了。
#include <iostream>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
int x = 1;
int y = 1;
int dx = 1;
int dy = 1;
int cnt = 0;
while (cnt != 2)
{
cnt = 0;
x = x + dx;
y = y + dy;
if (x == 1 || x == n)
{
++cnt;
dx = -dx;
}
if (y == 1 || y == m)
{
++cnt;
dy = -dy;
}
}
cout << x << " " << y << endl;
return 0;
}
输入 1:4 3
输出 1:1 3
输入 2:2017 1014
输出 2:2017 1
输入 3:987 321
输出 3:1 321
实际上在当操作次数达到lcm(n−1,m−1)lcm(n-1,m-1)lcm(n−1,m−1)的时候会退出循环。这个时候看一下分别经历了多少个循环即可。