此复试题目是根据博主在考场上的记忆回忆复原的题目。为了恢复试题的原貌,我根据试题要求进行合理的脑补,按照oj系统的风格补全了试题的Problem Description、Input、Output、Sample Input、Sample Out等内容,并加入了详解、具体的代码实现。题目在卷子上的具体呈现形式是洛谷oj那个样子的,所以仅供大家参考。有什么错误、不合理的地方欢迎指出。
以下题目中的Sample Input数据除第三题外,都是我瞎编的。原创不易,还请大家多支持
第一题
Problem Description
有一群人去电影院看电影。但电影院有个很奇怪的规定:成人只能分到数字奇数座位号,未满18岁的儿童只能分到数字为偶数的座位号。
Input
输入共有n个人去看电影
(1<=n<1000)
,接下来输入n个人的座位号,每个座位号用空格隔开
Output
依次输出此次看电影成人的人数以及成人在所有人中所占的比例、未成年人的人数以及未成年人在所有人中所占的比例,计算出的比例保留两位小数,每个输出用空格隔开
Sample Input
8 13 12 10 8 3 24 21 19
Sample Output
4 0.50 4 0.50
这道题就是个送分题,没什么难度,注意下计算比例时的精度问题就ok。
#include <stdio.h>
int main() {
int n, t, cnt1 = 0, cnt2 = 0;
scanf("%d", &n);
while (n--)
{
scanf("%d", &t);
if (t % 2 != 0)cnt1++;//统计成年人数
else cnt2++;//统计未成年数
}
printf("%d %.2f %d %.2f\n", cnt1, cnt1 * 1.0 / (cnt1 + cnt2), cnt2, cnt2 * 1.0 / (cnt1 + cnt2));//输出
}
第二题
Problem Description
有一个大容器,现在向其中加入若干铅锤的木板,每个木板的顶端坐标记为
(i,yi)
,如图
![](https://s2.ax1x.com/2019/04/01/As0P61.png)
Input
输入共加入n个木板
(1<=n<1000)
,接下来输入n个数字表示加入的n个木板的高度,每个高度用空格隔开
Output
输出该容器最大能装多少体积的水(容器不允许倾斜)
Sample Input
8 1 8 6 4 5 3 7 2
Sample Output
35
当时看到这道题的时候并没有想到什么特别好的办法,但注意到这道题的n的取值范围,1到1000。如果我们用暴力解的话复杂度是O(n^2),也就是说最多计算100w次就可得到答案,在我们接受的范围之内,所以在考场上就用暴力解了这道题
#include <stdio.h>
#include <algorithm>
using namespace std;
int arr[1000];
int main() {
int n, MAX = 0;
scanf("%d",