今天做了不少的题,当然对的错的都有。尤其是下午吧,开始的时候不能交题,就只好一个劲的写,然后呢,一会一个一会一个写得很轻松,结果一下子就写了四个。当时我一看不能再写了,写的这么快那肯定是有毛病啊。可是又不能交,我自己看过来看过去觉得挺好的,想改个错也无从下手啊,难受的我不行。到五点多能交的时候,挨个上去,对了一个,,,还好还对了一个啊。周六,一般晚上洗澡休息的,没再去,这吃完饭回到了宿舍玩个游戏吧看个有嘻哈吧啥都没兴趣,算了,看看我那三道题。知道错了以后有一道题看了看就知道想简单了,方法就不对,在看其他的。这道二分怎么能错呢,这公式啥的完全没毛病啊,输出left还是right还是mid?挨个试一圈,都没对(后来证明right对,但是开始用的cincout),再搜搜题解,看到一个是这样的:
if( judge(mid) {
right=mid-1; ans=mid; } else { left=mid+1; } 最后 printf("%d\n",ans);。我试了试对了。理解了一下,应该就是当mid太小,right缩小逼近的时候,ans才会变换成mid,而当mid太大,left扩大来逼近的时候,ans是不变的,保持上一次的值。而想了又想,这个操作大概也就等同于输出right吧这时候我有把开始的代码换成right,也对了。这算是明白了错的地方。但是再回到该输出什么这个地方,还是很懵懂。更不用说加个ans这个操作,让我想实在想不出来。
20170812
最新推荐文章于 2017-10-30 16:11:00 发布