2 条题解

  • 1
    @ 2023-6-27 9:32:46
    #include <bits/stdc++.h>
    using namespace std;
    int n;
    int a[100001],b[100001],t[100001];
    bool cmp(int x,int y){
        return x>y;
    }
    int main(){
        cin>>n;
        for (int i=1;i<=n;i++){
            cin>>a[i];
            b[i]=a[i];//将成绩备份到另一个数组中
        }
        sort(b+1,b+n+1,cmp);//排序备份数组
        for (int i=1;i<=n;i++){
            t[b[i]]=(t[b[i]]?t[b[i]]:i);//计算备份数组中成绩的对应排名
        }
        for (int i=1;i<=n;i++){
            cout<<t[a[i]]<<endl;
        }
        return 0;
    }
    
    • 1
      @ 2022-12-12 19:47:43
      #include <bits/stdc++.h>//万能头文件
      using namespace std;
      map <int,int> m; 
      int a[100010];
      int main()
      {
          int n,i;
          cin>>n;
          //求每个数字出现的次数 
          for(i = 1;i <= n;i++)
          {
              cin>>a[i];
              //如果x在map中没有出现过
              if(m.count(a[i]) == 0)
              {
                  m[a[i]] = 1;
              }
              else
              {
                  m[a[i]]++;
              }
          }
          int c = 1,t;
          //修正名次
          for(map<int,int>::reverse_iterator j = m.rbegin();j != m.rend();j++)
          {
              t = j->second;
              m[j->first] = c;
              c = c + t;
          }
          //输出结果
          for(i = 1;i <= n;i++)
          {
              printf("%d\n",m[a[i]]);//输出
          } 
          return 0;
      }//代码已AC
      
      • 1

      信息

      ID
      539
      时间
      1000ms
      内存
      128MiB
      难度
      4
      标签
      递交数
      69
      已通过
      31
      上传者