NOIP(第21届)--2015--普及组--复赛--试题与答案(NA21)

2022-07-07 已有0人阅读 作者: IT航班

中小学编程红宝书.zip


关键词:

北京中关村;海淀黄庄;北京大学;清华大学。少儿编程;中小学编程;信息学竞赛;计算机竞赛;NOIP;NOIP竞赛;CSP-J/S竞赛;NOI竞赛。北京中学;东坝。

      2015年、普及组、复赛,第21届。

面向6-18岁中小学生,做最专业的中小学编程教育。



解析与答案:


1题:金币

1、说明

A、试题类型:

       推理。

 

B、算法模型:

       数学模拟题。

 

C、试题说明:

找到天数大于k的时候一天的金币数是多少,再用当前累计的天数减去k就是差的值。

2、代码

#include<iostream>

#include<cstdio>

#include<cstring>

#include<cmath>

#include<algorithm>

using namespace std;

 

int main()

{

    int n,k,coin = 0,temp = 0;

    cin >> k;

      

    for(n = 1;temp <= k;n++)

       {

        coin += n * n;

        temp += n;

        // cout << coin << ' ' << temp << endl;

    }

      

    coin = coin - (temp - k) * (n - 1);

    cout << coin << endl;

      

    return 0;

}

2题:扫雷游戏

1、说明

A、试题类型:

       空间几何。

 

B、算法模型:

       空间推导。

 

C、试题说明:

       无。

 

2、代码

#include <iostream>

#include <cstdio>

#define N 103

 

void search(int i,int j);

 

char a[N][N];

int n,m;

 

int main() 

{

    scanf("%d %d",&n,&m);

    getchar();

    for (int i=0;i<n;i++)  

       {

        for (int j=0;j<m;j++)

            scanf("%c",&a[i][j]);

        getchar();

    }

      

    for (int i=0;i<n;i++)  

       {

        for (int j=0;j<m;j++)  

              {

            if (a[i][j]=='*')

                printf("*");

            else

                search(i,j);

            if (j+1==m) printf("\n");

        }

    }

      

    return 0;

}

 

void search(int i,int j)   

{

    int flag=0;

    for (int di=-1;di<2;di++)

        for (int dj=-1;dj<2;dj++)

              {

                     int x=i+di;

                     int y=j+dj;

                     if ((di!=0||dj!=0)&&x>=0&&x<n&&y>=0&&y<m)

                            if (a[x][y]=='*')

                                   flag++;

              }

              printf("%d",flag);

}

3题:求和

1、说明

A、试题类型:

       经典数学问题。

 

B、算法模型:

       三元组。

 

C、试题说明:

x、y,z是整数。x < y < z

 

y - x = z - y

 

移项,得z+x=2yz+x=2y

 

2y为偶数,z+xz+x等于一个偶数,z和x又都为整数,说明x和z同奇同偶。

color_x=color_z

 

x和z颜色一样。

 

三元组,所以完全可以把满足上述条件的编号存在一起,即是把同奇偶,同颜色的存在一起。y,直接扔掉。

 

2、代码

#include<cstdio>

 

#define MAXN 100000

#define MAXM 100000

#define MOD 10007

 

int N,ans;

int f[MAXM+5][2],n[MAXM+5][2];

int Number[MAXN+5],Color[MAXN+5];

 

 

int read()

{

    int x=0,f=1;char s=getchar();

    while(s<'0'||s>'9')

       {

              if(s=='-')

                     f=-1;

              s=getchar();

       }

    while(s>='0'&&s<='9')

       {

              x=x*10+s-'0';

              s=getchar();

       }

    return x*f;

}

 

 

 

int main()

{

    N=read();

    read();

      

    for(int i=1;i<=N;i++)

        Number[i]=read()%MOD;

      

    for(int i=1;i<=N;i++)

    {

        Color[i]=read();

        f[Color[i]][i&1]=(f[Color[i]][i&1]+Number[i])%MOD;

        n[Color[i]][i&1]++;

    }

      

    for(int i=1;i<=N;i++)

        ans=(ans+(((n[Color[i]][i&1]-2)%MOD*Number[i]%MOD+f[Color[i]][i&1])%MOD)*(i%MOD)%MOD)%MOD;

    printf("%d",ans);

}

4题:推销员

1、说明

A、试题类型:

       基本算法。

 

B、算法模型:

       贪心问题。

 

C、试题说明:

考虑贪心,对于选x个人,和选(x+1)个人,后一种一定是先选了x是的人,再选一个没有被选过的人。

 

没有被选过的人分两种情况,一种是要多走一段,另一种则不。

 

建两个堆,维护两种情况,时间复杂度是O(n*log(n))。

 

2、代码

#include<iostream>

#include<cstdio>

#include<queue>

using namespace std;

 

const int N=100005;

int n,pos,ans,lst;

bool vis[N];

 

struct node

{

       int dis,tir,num;

}a[N];

 

struct cmp1

{

       bool operator()(node c,node d)

       {

              return c.tir<d.tir;

       }

};

 

struct cmp2

{

       bool operator()(node c,node d)

       {

              return c.tir+2*c.dis<d.tir+2*d.dis;

       }

};

 

priority_queue<node,vector<node>,cmp1>q1;

priority_queue<node,vector<node>,cmp2>q2;

 

int main()

{

       scanf("%d",&n);

 

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

              scanf("%d",&a[i].dis);

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

              scanf("%d",&a[i].tir);

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

              a[i].num=i;

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

              q2.push(a[i]);

 

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

       {

              int val1,val2;

              while(!q1.empty()&&vis[q1.top().num])

                     q1.pop();

              if(q1.empty())

                     val1=0;

              else

                     val1=q1.top().tir;

              while(!q2.empty()&&q2.top().num<=lst)

                     q2.pop();

              if(q2.empty())

                     val2=0;

              else

                     val2=q2.top().tir+2*(q2.top().dis-pos);

              if(val1>=val2)

              {

                     ans+=val1;

                     vis[q1.top().num]=1;

                     q1.pop();

              }

              else

              {

                     ans+=val2;

                     vis[q2.top().num]=1;

                     for(int i=lst+1;i<=q2.top().num;i++)

                            q1.push(a[i]);

                     lst=q2.top().num;

                     pos=a[lst].dis;

                     q2.pop();

              }

              printf("%d\n",ans);

       }

       return 0;

}

 




IT航班提供:课程视频、、课程书籍、竞赛辅导、少儿编程指导、课程采购、加盟、少儿编程资料、少儿编程课程、保送生、特长生、加分、中小学计算机教育、中小学信息学、竞赛、中小学信息学课程、人工智能、中小学编程加盟、少儿编程加盟、品牌加盟、技术加盟、技术指导、课程加盟、师资培训、中小学编程教辅资料、中小学编程教师培训、少儿编程教学书籍、少儿编程视频、教学书籍、教师培训、教学视频、CSP-J/S、中小学信息学课程服务、竞赛指导、课程提供、国内外计算机中小学计算机竞赛、信息学竞赛、信息学课程提供商、信息学奥林匹克。

      

IT航班支持----中小学编程比赛汇总:

 

第一部分:国内比赛(IT航班支持)   

1、软件能力认证(CSP-JS) 

2、全国青少年信息学奥林匹克联赛(NOIP)    

3、全国青少年信息学奥林匹克竞赛(NOI)

4、中国青少年………………………  

5、………………………创新挑战赛  

6、全国青少年………………………  

7、………………………

8、 恩欧希教育信息化发明创新奖  

9、世界机器人大赛(WRC) 

10、………………………大赛    

11、少………………………智能教育成果展示大赛 

12、“明天小小科学家”奖励活动

13、………………………    

14、………………………    

15、国际信息学……………………… 

16、………………………    

 

第二部分:国际比赛(IT航班支持)   

17、………………………    

18、国际………………………    

19、………………………

20、美国信息学……………………… 

21、加拿大……………………… 

22、官方邀请赛 (CCO)     

23、国际计算思维………………………    

24、美国计算机……………………… 

25、澳大利亚………………………    

 

第三部分:企业比赛(IT航班支持)   

26、微软MTA    

27、………………………挑战赛 

28、………………………科学奖 

29、………………………学奖    

30、………………………创新挑战赛 

31、………………………挑战赛 

32、………………………芯计算机表演赛 

33、………………………大赛    

 

第四部分:Scratch相关竞赛(IT航班支持)    

34、全国中小学生电脑制作大赛     

35、………………………    

36、………………………    

37、………………………    

 

第五部分:其它(IT航班支持)   

38、NOI夏令营  

39、NOI冬令营(NOIWC)  

40、全国青少年……………………… 

41、国际青少年………………………

 

联系方式:

A、官方网址:

http://www.itflight.net


B、微信公众号:

添加微信,获取资料。

image.png

 



关注公众号,获取动态。

image.png