『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是不是就高兴了。

就拿式字算即可。

 

posted @ 2015-07-16 19:35  Iris.Catch-22.S、`  阅读(319)  评论(0编辑  收藏  举报