• 『Luogu OJ』『C++』Level 1-4 数组


    关卡1-4,5道题 

    数组

    任务说明:跟数组有关的题目基本上都要用到循环,所以请先完成1-3。

    要完成这个任务,请将以下的题目都AC掉(即通过这道题目):

    1.陶陶摘苹果 P1046

    2.校门外的树 P1047

    3.小鱼的数字游戏 P1427

    4.小鱼比可爱 P1428

    5.不高兴的津津(升级版) P1534

    练习要循序渐进,不能急于求成哦! 当然洛谷也允许在一定条件下跳过某些关卡。最多可以跳过3次。

    成就达成时间:2015-07-16 19:19

    1.陶陶摘苹果 P1046

    陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。
    现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。

    输入格式:
    输入文件apple.in包括两行数据。第一行包含10个100到200之间(包括100和200)的整数(以厘米为单位)分别表示10个苹果到地面的高度,两个相邻的整数之间用一个空格隔开。第二行只包括一个100到120之间(包含100和120)的整数(以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。
    输出格式:
    输出文件apple.out包括一行,这一行只包含一个整数,表示陶陶能够摘到的苹果的数目。

    依旧是PJ第一题小水题。

    没什么好过多解释的

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int apple[9];
     6     for (int i=0;i<=9;++i) cin>>apple[i];
     7     int Taotao;
     8     cin>>Taotao;
     9     Taotao+=30;
    10     int Ans=0;
    11     for (int i=0;i<=9;++i) if (apple[i]<=Taotao) ++Ans;
    12     cout<<Ans<<endl;     
    13     return 0;     
    14 }

    2.校门外的树 P1047

    某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。
    由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

    输入格式:
    输入文件tree.in的第一行有两个整数L(1 <= L <= 10000)和 M(1 <= M <= 100),L代表马路的长度,M代表区域的数目,L和M之间用一个空格隔开。接下来的M行每行包含两个不同的整数,用一个空格隔开,表示一个区域的起始点和终止点的坐标。
    输出格式:
    输出文件tree.out包括一行,这一行只包含一个整数,表示马路上剩余的树的数目。

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4 {
     5     int L,M;
     6     int Tree[10000];
     7     cin>>L>>M;
     8     int l,r;
     9     int Ans=0;
    10     for (int i=0;i<=L;++i) Tree[i]=1;
    11     for (int i=1;i<=M;++i)
    12       {
    13           cin>>l>>r;
    14           for (int j=l;j<=r;++j) Tree[j]=0;
    15       }
    16     for (int i=0;i<=L;++i) if (Tree[i]==1) ++Ans;
    17     cout<<Ans<<endl;
    18     return 0;
    19 }

    很自然的想法,把覆盖的区间染色,数据很小,所以空间可以支撑。

    计算太麻烦了,有兴趣的可以自己算算。

    3.小鱼的数字游戏 P1427

    小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了)。这对小鱼的那点记忆力来说实在是太难了,你也不想想小鱼的整个脑袋才多大,其中一部分还是好吃的肉!所以请你帮小鱼编程解决这个问题。

    输入格式:
    一行内输入一串整数,以0结束,以空格间隔。
    输出格式:
    一行内倒着输出这一串整数,以空格间隔。

    说实话一开始我看错题了……我以为是数字反转念,又去搞字符串和eof了……

    然后一看原来是超水题。

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4   {
     5        int Num[100];
     6      int a=1;
     7      int n=0;
     8      while (a!=0)
     9        {
    10             cin>>a;
    11             Num[n]=a;
    12             ++n;            
    13        }
    14      for (int i=n-2;i>=1;i--)
    15        cout<<Num[i]<<' ';
    16      cout<<Num[0]<<endl;
    17     return 0;
    18   }
    19   

    4.小鱼比可爱 P1428

    人比人,气死人;鱼比鱼,难死鱼。小鱼最近参加了一个“比可爱”比赛,比的是每只鱼的可爱程度。参赛的鱼被从左到右排成一排,头都朝向左边,然后每只鱼会得到一个整数数值,表示这只鱼的可爱程度,很显然整数越大,表示这只鱼越可爱,而且任意两只鱼的可爱程度都不一样。由于所有的鱼头都朝向左边,所以每只鱼只能看见在它左边的鱼的可爱程度,它们心里都在计算,在自己的眼力范围内有多少只鱼不如自己可爱呢。请你帮这些可爱但是鱼脑不够用的小鱼们计算一下。

    输入格式:
    第一行输入一个整数n,表示鱼的数目。 
    第二行内输入n个整数,用空格间隔,依次表示从左到右每只小鱼的可爱程度。
    输出格式:
    行内输出n个整数,用空格间隔,依次表示每只小鱼眼中有多少只鱼不如自己可爱。

    这个犹豫了一下要不要写个判断、最后还是懒,算法什么鬼以后再说吧。

    这一段时间都是弱智模拟秒写……

     1 #include <iostream>
     2 using namespace std;
     3 int main()
     4  {
     5    int n;
     6    cin>>n;
     7    int Fish[100],Cute[100];
     8    for (int i=1;i<=n;++i) 
     9      {
    10          cin>>Cute[i];
    11          Fish[i]=0;
    12      }
    13    for (int i=1;i<=n;++i)
    14      for (int j=1;j<i;++j)
    15        if (Cute[j]<Cute[i]) ++Fish[i];  
    16    for (int i=1;i<n;++i) cout<<Fish[i]<<' ';
    17    cout<<Fish[n];
    18    return 0;
    19  }
    20  

    5.不高兴的津津(升级版) P1534

    津津上初中了。妈妈认为津津应该更加用功学习,所以津津除了上学之外,还要参加妈妈为她报名的各科复习班。另外每天妈妈还会送她去学习朗诵、舞蹈和钢琴。但是津津如果一天上课超过八个小时就会不高兴,而且上得越久就会越不高兴。
        这次与NOIp2004普及组第一题不同的是:假设津津不会因为其它事不高兴,但是她的不高兴会持续到第二天。请你帮忙检查一下津津以后n天的日程安排,看看以后n天她会不会不高兴(计算方法:用昨天不高兴程度加上今天上课总时间减去8后得到的数作为今天不高兴程度);输出以后n天结束后不高兴程度和是多少。

    输入格式:
    第1行:一个数n
        第2行~第n+1行:每行两个数,表示这天上学时间和课外补习班时间
    输出格式:
    一个数,这n天过后的不高兴程度和

     1 #include<iostream>
     2 using namespace std;
     3 int main()
     4  {
     5    int n;
     6    cin>>n;
     7    int School,After_School,Unhappy,UnHAPPY=0;
     8    for (int i=1;i<=n;++i)
     9      {
    10          cin>>School>>After_School;
    11          //if (School+After_School>8) 
    12           Unhappy=Unhappy+School+After_School-8;
    13           UnHAPPY+=Unhappy;
    14      }
    15    cout<<UnHAPPY<<endl;
    16   return 0;
    17  }
    18  

    代码先贴上。

    说实话我个人对这个题目描述感觉乱七八糟的。//拿大小写敏感随手提醒下Pascal选手如何抄代码(我就被坑过……)

    现在仔细看看。

    其实是被不高兴的津津那道题拐走了

    (计算方法:用昨天不高兴程度加上今天上课总时间减去8后得到的数作为今天不高兴程度)

    这句话是本题的要求

    而第一段就是个坑。

    感觉是出题人硬想跟NOIp原题变式,但跟原题的高兴不高兴本来没关系。

    就这样。

    不要考虑今天只有5是不是就高兴了。

    就拿式字算即可。

  • 相关阅读:
    python-scapy学习笔记-(1)
    python系统性能模块笔记
    Python爬虫总结
    pm2的的常用命令及用法
    Javascript的map与forEach的区别
    对MVVM思想的在认识
    RN的打包
    undefined与null的区别
    rem与em的区别
    JS的函数参数传递为值传递
  • 原文地址:https://www.cnblogs.com/Catch-22/p/4652294.html
Copyright © 2020-2023  润新知