【老潘信息学系列】2018年NOIP竞赛题详解(一)

网友投稿 2019-06-14 15:44

2019年NOIP信息学竞赛,将在10月举行。潘老师将用一个系列,详细讲解过往5届竞赛的典型竞赛题,开拓孩子的思维,提升比赛成绩。同时,潘老师将为全四川省娃娃免费提供问题解答。家长、孩子有任何信息学方面的难题,都可以加老师微信询问。

(长按识别二维码)

获得NOIP一等奖难吗?在潘老师看来,对于四川学生娃来说,并不难,具备一定的基础,再加上稳定的发挥,一等奖较容易。所以,孩子并不是一定要特牛,才能获得一等奖。上海市的一等奖需要300多分,四川省只需要200分左右。后续潘老师会分析,为什么一等奖很容易。

2018年NOIP信息学竞赛,有一道题叫“龙虎斗”,这道题目难度中等,考察的是学生的基本功是否扎实。这题如果顺利拿到分,再加上送分题,200分就可以拿到,也就是说一等奖到手了。孩子将成为艺高人胆大的那一类人:)

https://cdn.china-scratch.com/timg/190616/1544261147-0.gif


https://cdn.china-scratch.com/timg/190616/15442G4N-1.jpg

详解如下:

解题思路:

1) 天降神兵,不管他降落到哪里,都是这样:

        a[p1]+=s1;

2)算出龙的气势dragon

        for(int i=1;i<=m-1;i++)

            dragon+=a[i]*(m-i);

3)算出虎的气势tiger

        for(int i=m+1;i<=n;i++)

            tiger+=a[i]*(i-m);

4)得到双方的气势后,需要判断哪方的气势小一些, S2位工兵应该被派到气势小的一方。

    if(dragon<="" p="">

            for(int i=1;i<=m-1;i++){

                long long temp=dragon+s2*abs(i-m);

                if(abs(temp-tiger)< p="">

                    minn=abs(temp-tiger);

                    pos=i;

                }

            }

        }

    else if(dragon>tiger){//增加到虎 

        for(int i=m+1;i<=n;i++){

            long long temp=tiger+s2*abs(i-m);

            if(abs(temp-dragon)< p="">

                minn=abs(temp-dragon);

                pos=i;

            }

        }

    }

    else

        pos=m;

至此,问题得解,pos就是s2个工兵应该被派往的位置。是不是很容易呢?

点击下面“阅读原文”可获取更多信息。可以加微信索要详细代码、资料。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com