先发一下题目
第一题:
1.栅栏作画
(paint.pas/c/cpp)
【问题描述】
冬去秋来,时光总是会改变一些东西。随着农夫Farmer John的老去,他的栅栏也越来越丑陋了,本着处女座的原则,农夫Farmer John决定做点什么了!他要给他的栅栏重新作画。但是年老的Farmer John并不能独立完成所有的栅栏的绘画。所以他找到了他最钟爱的奶牛Bessie,来帮助他完成工作。
为了简化问题,我们把所有栅栏看成一条直线,每个栅栏杆是这个直线上的单位长度。John开始从a刻度到b刻度之间的栅栏进行绘画。也就是说他完成了b-a个栅栏的绘画(b>a),比如说a=3 b=5,那么John就完成了两个栅栏的绘画。
同时,奶牛Bessie完成c到d的绘画,但是年老的John无法回忆起他已经对那些栅栏进行处理了,所以对于c到d可能和a到b有重复的绘画处。那么我们要求求出一共对多少个栅栏进行了绘画。(c<d,a<b)
【输入】
输入数据一共有两行,第一行分别为a和b,第二行分别为c和d。均用一个空格隔开。
【输出】
输出一个正整数,表示总共对多少个栅栏进行了绘画。
【数据范围】
保证所有数据在[0,100]区间且均为正整数。
这题我满分,写一下拿道题之后的思路
首先我大致的代码思路是先开一个数组,全是0,a到b变1,c到d变1,for循环,如果是1 那么如果后面一个也是1,累加器s就加1,最后输出。
其实最先的代码样例是过了,但我在那试的时候,发现当c比b大1是,是s比正解多1,因为b到c这一根栅栏没画,但却把他算进去了,于是改变思路,就对了。
跳过,第二题:
铜组第一题 失去的母牛
文件名(lostcow.cpp)
题目描述
FJ丢失了他引以为傲的牛Bessie,他必须找到他!
幸运的是,农场间只有一条长路径,而且FJ知道Bessie会在这条路的一些点上。如果我们把这条路看作一条数轴,那么FJ现在在x点上,而Bessie在y点上(FJ不确定)。如果FJ只知道Bessie大致在哪里,他只能径直向它走|x-y|的距离。不幸的是,由于黑山老树精的出没,外面很黑,FJ看不见任何东西。他唯一能找到Bessie的办法是来回走动直到他最终到达了Bessie所在的位置。
为了找出搜索的最佳方案,FJ咨询了信息大佬——Aico(黄加瑜)。Aico告诉他这是个经典的计算机问题,叫做“Lost Cow Problem”(丢失牛问题)(这是真的!)。
FJ找牛的最佳方案是先移动到x+1的位置,然后反向移动到x-2,接着是x+4,以此类推。在一个“之字形”模式中,他每一步移动后离起点的距离是上一步时离起点距离的两倍(x+1,x-2,x+4)。正如他在学习“丢失牛问题”算法时一样,这种方式能让他在最坏情况下总共走9倍的实际距离(|x-y|)。(这也是真的!9倍实际距离实际上就是这种算法最坏的情况)
Farmer John想去验证这个结果。已知x和y,请编程计算他找到Bessie所行走的距离。
输入输出格式
输入格式:(lostcow.in)
一行两个数据 x和y。
输出格式:(lostcow.out)
一个数据,表示Farmer John将前往Bessie的距离。
数据范围
0<=x,y<=1000
这题我被坑了,打了大半天,题意都没搞懂,说实话一个人就算是编程能力再厉害,只要他题没读懂都是白搭,毕竟不知道题目的意思能得分的都是些大佬。
至于第三第四道题目,已经不是我这种小鸟碰的,这一次的测试每一题的难度都相差甚远,对于同学之间的差距更是一目了然。
希望自己能再接再厉,在以后的日子中更加努力,加油!!!