• P1478 陶陶摘苹果(升级版)


    洛谷P1478 陶陶摘苹果(升级版)

                        

         我的思路是先不管体力,先将够不到的苹果全部排除,然后将剩下的苹果按体力消耗升序排序,就可以求出最多可摘的苹果数目。

    按照这个思路,我在做的时候遇到了两个难点。

    ①怎样将够不到的苹果排除

      够不到所以就不用摘,所以我将够不到的苹果所消耗的体力变大,只变大到大于陶陶自身体力多一点就行。

     1 for(int i=1;i<=n;++i)
     2 {
     3     for(int j=1;j<=2;++j)
     4     {  
     5         cin>>c[i][j];
     6         if(c[i][1]>a+b)
     7         {
     8           c[i][2]=s+1;
     9         }
    10     }
    11 }

    ②怎样将体力按升序排列

        我想用函数,一开始我自己定义,结果没有定义出来。

        我搜了搜,结果发现sort可以将数组按升序排列。

    1 for(int i=1;i<=n;++i)
    2     {
    3         d[i]=c[i][2];
    4     }
    5     sort(d,d+n+1);

    sort括号中第一个数:要排序的数组的起始地址。

    第二个数:是结束的地址(最后一个数据的后一个数据的地址)

    而且要加头文件

    #include<algorithm>

    完整代码:

     1 #include<iostream>
     2 #include<algorithm>
     3 using namespace std;
     4 int n;
     5 int main()
     6 {
     7     int m=0,x=0,s,a,b,c[5001][2],d[5001];
     8     cin>>n>>s;
     9     cin>>a>>b;
    10     for(int i=1;i<=n;++i)
    11     {
    12         for(int j=1;j<=2;++j)
    13         {  
    14           cin>>c[i][j];
    15           if(c[i][1]>a+b)
    16           {
    17               c[i][2]=s+1;
    18           }
    19         }
    20     }
    21     for(int i=1;i<=n;++i)
    22     {
    23         d[i]=c[i][2];
    24     }
    25     sort(d,d+n+1);
    26     for(int i=1;i<=n;++i)
    27     {
    28         x+=d[i];
    29         m++;
    30         if(s<x)
    31         {
    32             cout<<m-1;break;
    33         }  
    34     }
    35     if(n==0||s==0||a+b==0)
    36       cout<<0;
    37     return 0;
    38 }

    当然,sort也可以降序排列,升序排列只是sort的默认情况。

    less<数据类型>()是从小到大排序 

    greater<数据类型>()是从大到小排序。

    选择升序或降序并加在括号里,就可以将数组降序排列。如:

     1 #include<iostream>
     2 #include<algorithm>
     3 using namespace std;
     4 int main()
     5 {
     6     int a[10];
     7     for(int i=0;i<10;i++)
     8        cin>>a[i];
     9     sort(a,a+10,greater<int>());
    10     for(int i=0;i<10;i++)
    11     cout<<a[i]<<" ";
    12     return 0;
    13 }
  • 相关阅读:
    shell学习(15)- eval及shell No such file or directory解决办法
    30张图带你彻底理解红黑树
    linux中$@,$*,$0,$$,$?参数的含义
    QPS,TPS,吞吐量,响应时间详解及关系
    shell学习(14)- who
    SpringBoot 入门
    创建 Java 项目
    部分 GIT 命令
    Spark Executor Task 的执行和数量
    Ubuntu 18 单机安装 HDP 3
  • 原文地址:https://www.cnblogs.com/zkw666/p/12264519.html
Copyright © 2020-2023  润新知