一、做题情况
第一题模拟 90/100,DEV-C++样例通过,模拟后补题AC;
第二题模拟 40/100,分情况讨论,模拟后补题AC;
第三题模拟 0/100,不会做,模拟后补题AC;
第四题模拟 0/100,不会做,模拟后补题AC。
比赛得分 1.90/100 2.40/100 3.0/100 4.0/100 90+40+0+0=130 130/400,赛后补题得分1.100/100 2.100/100 3.100/100 4.100/100 100+100+100+100=400 400/400
本次考试,先写了T1,题目中“由于独木桥的桥面宽度很窄,只能容纳一个人通过,当两个人相遇时,他们无法交错通过,只能各自调转方向,继续沿反方向行走。”这句话迷惑住了,就做了第二题,思考和写代码用了75分钟左右分钟,想到了第一题的那句话没用,就把第一题写了。第三和四道题都不会,就胡乱编了输出。
二、题解报告
1.独木桥:
题面:
考试时代码:
考试时思维:此题很水,但有坑!!!题目中“由于独木桥的桥面宽度很窄,只能容纳一个人通过,当两个人相遇时,他们无法交错通过,只能各自调转方向,继续沿反方向行走。”这句话,考虑一下相遇的情况,如果每个人都朝向最近的一个端点进行行走,因为每人的速度都是相同的,因此不会出现相遇的情况。所以本题就找出来每个人都朝向自己离得最近的一个端点进行行走时的最大值。定义4个变量n.l.x和ans,n和l就不说了,题目中有,x和ans分别表示第i个人的初始位置到独木桥左端点的距离多少米与至少需要的时间。输入完n.l后,用for循环输入一个人的米数,用max对ans重赋值,ans=max(ans,min(x,1-x)),(代码表示:ans=ans与x与l-x中取最小值中取最大值)。循环完,最后再输出就行了。
AC代码承上:
2.移动棋子:
题面:
考试时代码:
考试时思维:输入a和b进行分类讨论,有三种,同号,异号,为0,还有四种情况。1.x×y<0 2.x>y
3.x<y 4.x×y>0,根据情况写出代码即可。
AC代码承上:
3.动物园:
题面:
考试时代码(随便乱蒙,你们肯定看不懂):
考试时思维:并没有,因为不会。
考试时思维:这个题本质上就是双指针的应用。首先我们有两个指针R和L,先让R++直到L和R之间有m种动物,然后再L++,保证区间内有m种动物的前提下,维护最小区间长度,如果区间内小于m种动物,R++,然后再L++,保证区间内有m种动物的前提下,维护最小区间长度,如果区间内小于m种动物,R++······,直到R到头,输出最小的区间长度×10。
AC代码承上:
4.摧毁:
题面:
考试时代码(随便乱蒙,你们肯定看不懂):
考试时思维:并没有,因为不会。
考试时思维:简化一下题意,本题的意思是消灭掉所有的数字。第一种操作是消除掉一个数字,代价为1,第二种操作是消除掉一种数字,代价为c。我们把所有相同的数字数量统计出来,这两种操作选择最优即可(要用桶标记)。
AC代码承上:
四、模拟后总结
第一题不错,第二题还行,以后要多理解,多做题,争取下次模拟AC道题。