cmp

 

http://www.fjutacm.com/Problem.jsp?pid=1620

 

sort很方便,遇到排序题我就不受控制往sort靠,记几个知识点方便以后找。

  1. #include<algorithm>

    using namespace std;

  2. sort(a,a+n);//sort(a,a+n,cmp);
  3. sort默认升序,改降序:

    bool cmp(int a,int b){
      return a>b;

    }

  4. 加上结构体和数组:

    struct node{

      int a;

      int b;

    }q[50];

    bool cmp(node x,node y){
      return x.a<y.a;//这里只排a

    }

    bool cmp(node x,node y){

      if(x.a!=y.a)

      return x.a<y.a;//如果a一样就排b

      if(x.b!=y.b)

      return x.b<y.b;

    }

  5. 上面题的代码:

    #include<stdio.h>
    #include<algorithm>
    using namespace std;

    struct node{
      int a;
      int b;
    }q[30];

    bool cmp(node x,node y){
            return x.a<y.a;
    }

    int main()
    {
      int t,N;
      scanf("%d",&t);
      for(int i=0;i<t;i++){
      scanf("%d",&N);
      for(int j=0;j<N;j++){
        scanf("%d%d",&q[j].a,&q[j].b);
      }
      sort(q,q+N,cmp);
      for(int i=0;i<N;i++){
        for(int f=0;f<q[i].b;f++){
          for(int k=1;k<=q[i].a;k++){
            if(k==1)
            printf(">+");
            else if(k==q[i].a)
            printf("+>\n");
            else
            printf("-");
            }
                }
                printf("\n");
              }
            }
    return 0;
    }

看到能用sort就用咯http://www.fjutacm.com/Problem.jsp?pid=1142

 

做个小补充:

stable_sort():当排序元素相等时,保留原来的顺序。在对结构体排序时,当结构体中的排序元素相等时,如果需要保留原序,可以用stable_sort()。

partial_sort():局部排序。例如有10个数字,求最小的5个数。如果用sort(),需要先全部排序,再输出前5个;而用partial_sort()可以直接输出前5个。

 

还有几个没做的题,先码下来

http://www.fjutacm.com/Problem.jsp?pid=1214

https://www.dotcpp.com/oj/problem1568.html 

EOF

posted @ 2021-01-16 15:14  Untergehen  阅读(151)  评论(0编辑  收藏  举报