大一寒假培训2

nefu1481题 谁考了第k名排序

#include

using namespace std;


 struct sa
  {
     
   int id;
    double cj;


    }a[200];



    int cmp(const struct sa &a,const struct sa &b)
    {
     
        return a.cj>b.cj;
    }

int main()
{
        int n,k;

   cin>>n>>k;

  for(int i=1;i<=n;i++)
  {
     
      cin>>a[i].id>>a[i].cj;
  }

   sort(a+1,a+1+n,cmp);
   printf("%d %g\n",a[k].id,a[k].cj);

    return 0;
}

nefu1482题 奇数单增序列

#include

using namespace std;
 int cmp(const int&j,const int&u)
 {
     
     return j<u;
 }

 int main()
{
     
    int n,i,k,j,a[502],b[502];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
     
        scanf("%d",&a[i]);
    }
    for(i=0,j=0;i<n;i++)
    {
     
        if(a[i]%2!=0)
        {
     
            b[j]=a[i];
            j++;
        }
        k=j;
    }
    sort(b,b+k,cmp);
    for(i=0;i<k;i++)
    {
       if(i<k-1)
        {
     printf("%d,",b[i]);
        }
        if(i==k-1)
        {
     
            printf("%d",b[i]);
        }
    }

    return 0;
}

nefu1483 成绩排序

#include

using namespace std;
 struct stu
 {
     
     char name[30];
     int cj;
 }a[22];
 int cmp(const struct stu&m,const struct stu&b)
 {
     
     if(m.cj!=b.cj)
     {
     
         return m.cj>b.cj;
     }
     else
     {
     
         return strcmp(m.name,b.name)<0;
     }
 }
 int main()
{
       int n,i,j;
    scanf("%d",&n);

   for(i=0;i<n;i++)
   {
     
      cin>>a[i].name>>a[i].cj;
   }
   sort(a,a+n,cmp);
   for(j=0;j<n;j++)
   {
     
       printf("%s %d\n",a[j].name,a[j].cj);
   }


    return 0;
}

nefu1659 没必要的排序1

#include

using namespace std;

 int cmp(const int&m,const int&b)
 {
     
     return m>b;
 }
 int main()
{
       int n,k,a[1002],j,sum,i;
    scanf("%d%d",&n,&k);
   sum=0;
   for(i=0;i<n;i++)
   {
     
      scanf("%d",&a[i]);
   }
   sort(a,a+n,cmp);
   for(j=0;j<k;j++)
   {
     
       sum=sum+a[j];
   }
   printf("%d",sum);


    return 0;
}

nefu1650 没必要的排序2

#include

using namespace std;
  const int maxn=1e7+10;
  const int maxk=1e5+10;
  int t[maxk];
  int main()
{
        int n,k,i,num,ans,x;
    scanf("%d%d",&n,&k);
      memset(t,0,sizeof(t));
  for(i=1;i<=n;i++)
  {
     
      scanf("%d",&x);
      t[x]++;
  }
  num=0;
  ans=0;
  for(i=1e5;i>=1;i--)
  {
       if(t[i]>0)
      {
     num=num+t[i];
      ans=ans+t[i]*i;
      }
      if(num>=k)
      {
     
          ans=ans-(num-k)*i;
          break;
      }
  }
  printf("%d\n",ans);
    return 0;
}

nefu554 老和尚的导员

#include


using namespace std;
struct stu
{
     
    int cyycj,xdcj,gscj,yycj;
    int sum;
    int bianhao;
}a[102];
bool cmp(const struct stu&e,const struct stu&f)
{
     
    if(e.sum!=f.sum)
    {
     
        return e.sum>f.sum;
    }
    else
    {
     
        if(e.cyycj!=f.cyycj)
        {
     
            return e.cyycj>f.cyycj;
        }
        else
        {
     
            if(e.xdcj!=f.xdcj)
            {
     
                return e.xdcj>f.xdcj;
            }
            else
            {
     
                if(e.gscj!=f.gscj)
                {
     
                    return e.gscj>f.gscj;
                }
                else
                {
     

                    return e.yycj>f.yycj;

                }
            }
        }
    }
}

int main()
{
      int i,n;
  while(scanf("%d",&n)!=-1)
 {
     for(i=0;i<n;i++)
  {
     
      cin>>a[i].cyycj>>a[i].xdcj>>a[i].gscj>>a[i].yycj;
      a[i].sum=a[i].cyycj+a[i].xdcj+a[i].gscj+a[i].yycj;
      a[i].bianhao=i+1;
  }
  sort(a,a+n,cmp);
  for(i=0;i<n;i++)
  {
     
      printf("%d %d\n",a[i].bianhao,a[i].sum);
  }
 }

    return 0;
}

nefu556 健忘的老和尚

#include


using namespace std;
struct stu
{
     
    char name[100];
    int cj;
}a[1001];
bool cmp(const struct stu&e,const struct stu&f)
{
     
    return e.cj<f.cj;
}

int main()
{
      int n,m,o,i;
while(scanf("%d%d%d",&n,&m,&o)!=-1)
{
     
    for(i=0;i<n;i++)
    {
     
        cin>>a[i].name>>a[i].cj;
    }
    sort(a,a+n,cmp);
    for(i=n-m;i<n;i++)
    {
     
        printf("%s\n",a[i].name);
    }
    for(i=0;i<o;i++)
    {
     
        printf("%s\n",a[i].name);
    }
}

    return 0;
}

nefu873 戏说三国

#include


using namespace std;
struct stu
{
     
    char name[30];
    int zy;
    int dy;
    int wy;
    double sum;
}a[100001];
bool cmp(const struct stu&e,const struct stu&f)
{
     
    if(e.sum!=f.sum)
    {
     
        return e.sum>f.sum;
    }

       else
       {
     
           if(e.zy!=f.zy)
           {
     
               return e.zy>f.zy;
           }
           else
           {
     
               if(e.dy!=f.dy)
               {
     
                   return e.dy>f.dy;
               }
               else
               {
     
                   return e.wy>f.wy;
               }
           }
       }
    }


int main()
{
      int t,I,n,j,i;
  double m,b,c;
  while(scanf("%d",&t)!=-1)
{
       for(I=1;I<=t;I++)
  {
     
      scanf("%d%lf%lf%lf",&n,&m,&b,&c);

   for(i=0;i<n;i++)
  {
     
      cin>>a[i].name>>a[i].zy>>a[i].dy>>a[i].wy;
      a[i].sum=(a[i].zy*b*0.01+a[i].dy*m*0.01+a[i].wy*0.01*c)*1.0;
  }
 sort(a,a+n,cmp);


     printf("Case #%d:\n",I);
     for(j=0;j<n;j++)
        {
     
            printf("%s %.4lf %.4lf %.4lf %.4lf\n",a[j].name,a[j].sum,a[j].zy*b*0.01,a[j].dy*m*0.01,a[j].wy*c*0.01);
        }
 }

}
    return 0;
}

nefu874 相约摩洛哥

#include


using namespace std;
struct stu
{
     
    char name[12];
    int ta;
    int tb;
    int tc;
    int ca,cb,cc;
    int zcs;
    int cj;
}a[100001];
bool cmp(const struct stu&e,const struct stu&f)
{
     
    if(e.zcs!=f.zcs)
    {
     
        return e.zcs>f.zcs;
    }
    else
    {
     
        return e.cj<f.cj;
    }
}


int main()
{
      int n,i;

  while(scanf("%d",&n)!=-1)
{
     
   for(i=0;i<n;i++)
   {
     
       cin>>a[i].name>>a[i].ta>>a[i].tb>>a[i].tc;


   }

   for(i=0;i<n;i++)
   {
        a[i].zcs=0;
       a[i].cj=0;
       cin>>a[i].ca>>a[i].cb>>a[i].cc;
       if(a[i].ta!=-1)
       {
     
           a[i].cj=a[i].cj+a[i].ta+(a[i].ca-1)*20;
           a[i].zcs++;
       }
       if(a[i].tb!=-1)
       {
     
           a[i].cj=a[i].cj+a[i].tb+(a[i].cb-1)*20;
           a[i].zcs++;
       }
       if(a[i].tc!=-1)
       {
     
          a[i].cj=a[i].cj+a[i].tc+(a[i].cc-1)*20;
           a[i].zcs++;
       }

   }
   sort(a,a+n,cmp);
   for(i=0;i<n;i++)
   {
     
       printf("%s %d %d\n",a[i].name,a[i].zcs,a[i].cj);
   }

}
    return 0;
}

nefu1297 结构体排序题1

#include

using namespace std;
 struct stu
 {
     
     int hzb;
     int zzb;
 }a[102];
 bool cmp1(const struct stu&e,const struct stu&f)
 {
     
     if(e.hzb!=f.hzb)
     {
     
         return e.hzb>f.hzb;
     }
    else
    {
     
        return e.zzb>f.zzb;
    }
 }
 bool cmp2(const struct stu&e,const struct stu&f)
 {
     
     if(e.hzb!=f.hzb)
     {
     
         return e.hzb>f.hzb;
     }
    else
    {
     
        return e.zzb<f.zzb;
    }
 }
 bool cmp3(const struct stu&e,const struct stu&f)
 {
     
     if(e.hzb!=f.hzb)
     {
     
         return e.hzb<f.hzb;
     }
    else
    {
     
        return e.zzb>f.zzb;
    }
 }
 bool cmp4(const struct stu&e,const struct stu&f)
 {
     
     if(e.hzb!=f.hzb)
     {
     
         return e.hzb<f.hzb;
     }
    else
    {
     
        return e.zzb<f.zzb;
    }
 }
  int main()
{
       int x,y,n,i;
  while(scanf("%d%d%d",&x,&y,&n)!=-1)
{
     for(i=0;i<n;i++)
  {
     
      scanf("%d%d",&a[i].hzb,&a[i].zzb);

  }
  if(x==0&&y==0)
  {
     
      sort(a,a+n,cmp1);
  }
  if(x==0&&y==1)
  {
     
      sort(a,a+n,cmp2);
  }
  if(x==1&&y==0)
  {
     
      sort(a,a+n,cmp3);
  }
  if(x==1&&y==1)
  {
     
      sort(a,a+n,cmp4);
  }
  for(i=0;i<n;i++)
  {
     
      printf("(%d,%d)\n",a[i].hzb,a[i].zzb);
  }
}
    return 0;
}

今天就到这里啦~

你可能感兴趣的:(算法,c语言)